當前位置:首頁 » 存儲配置 » 存儲過程傳入參數

存儲過程傳入參數

發布時間: 2023-07-12 14:41:00

① 如何向存儲過程傳遞一個數組參數

方法一 分割

例:通過sql Server存儲過程傳送數組參數刪除多條記錄

eg. ID 值為'1,2,3' 以下存儲過程就是刪除表中id號為1,2,3的記錄:

CREATE PROCEDURE DeleteNews
@ID nvarchar(500)
as
DECLARE @PointerPrev int
DECLARE @PointerCurr int
DECLARE @TId int
Set @PointerPrev=1

while (@PointerPrev < LEN(@ID))
Begin
Set @PointerCurr=CharIndex(',',@ID,@PointerPrev)
if(@PointerCurr>0)
Begin
set @TId=cast(SUBSTRING(@ID,@PointerPrev,@PointerCurr-@PointerPrev) as int)
Delete from News where ID=@TID
SET @PointerPrev = @PointerCurr+1
End
else
Break
End
--刪除最後一個,因為最後一個後面沒有逗號,所以在循環中跳出,需另外再刪除
set @TId=cast(SUBSTRING(@ID,@PointerPrev,LEN(@ID)-@PointerPrev+1) as int)
Delete from News where ID=@TID
GO

這個方法麻煩不?於是又有另外一種方法——臨時表

方法二 Table對象

傳3個參數,都是數組形式還有時間類型用存儲過程更新

@Oid = 1,2,3,4

@Did = 111,222,333,444

@DateArr = '2007-1-1,2007-1-2,2007-1-3,2007-1-4'

CREATE proc Test999

@Oid nvarchar(1000) --ID1

,@Did nvarchar(1000) --ID2

,@DateArr nvarchar(1000) --日期

AS

DECLARE @id1s varchar(8000), @id2s varchar(8000), @dates varchar(8000)

set @id1s=@Oid

set @id2s=@Did

set @dates = @DateArr

-- 調用函數實現處理

SELECT @id1s=@id1s, @id2s=@id2s,@dates = @dates

UPDATE A SET terminate_time = B.dt

FROM [Table] A,(

SELECT

id1 = CONVERT(int, Desk_id.value),

id2 = CONVERT(int, room_id.value),

dt = CONVERT(datetime, terminate_time.value)

FROM dbo.f_splitstr(@id1s) Desk_id, dbo.f_splitstr(@id2s) room_id, dbo.f_splitstr(@dates) terminate_time

WHERE Desk_id.id = room_id.id

AND Desk_id.id = terminate_time.id

) B

WHERE A.Desk_id = B.ID1 AND A.room_id = B.ID2

GO這個還用到一個函數f_splitstr

CREATE FUNCTION dbo.f_splitstr(

@str varchar(8000)

)RETURNS @r TABLE(id int IDENTITY(1, 1), value varchar(5000))

AS

BEGIN

DECLARE @pos int

SET @pos = CHARINDEX(',', @str)

WHILE @pos > 0

BEGIN

INSERT @r(value) VALUES(LEFT(@str, @pos - 1))

SELECT

@str = STUFF(@str, 1, @pos, ''),

@pos = CHARINDEX(',', @str)

END

IF @str > ''

INSERT @r(value) VALUES(@str)

RETURN

END

② ORACLE中如何為存儲過程傳遞參數

給你一個 傳遞參數的例子

SQL> CREATE OR REPLACE PROCEDURE HelloWorld2 (
2 p_user_name IN VARCHAR2,
3 p_out_val OUT VARCHAR2,
4 p_inout_val IN OUT VARCHAR2
5 ) AS
6 BEGIN
7 dbms_output.put_line('Hello ' || p_user_name || p_inout_val || '!');
8 p_out_val := 'A';
9 p_inout_val := 'B';
10 END HelloWorld2;
11 /

Procere created.

SQL> DECLARE
2 p_outval VARCHAR2(10);
3 p_inoutval VARCHAR2(10) := '~Hi~';
4 BEGIN
5 HelloWorld2('Edward', p_outval, p_inoutval);
6
7 dbms_output.put_line('p_outval=' || p_outval);
8 dbms_output.put_line('p_inoutval=' || p_inoutval);
9 END;
10 /
Hello Edward~Hi~!
p_outval=A
p_inoutval=B

PL/SQL procere successfully completed.

SQL>

③ sql 存儲過程 怎麼傳入參數

執行帶參數的存儲過程的方法如下:
Exec sp_configure 'allow updates',1 --允許更新系統表。
exec dbo.User_ChangeObjectOwnerBatch 'OldOwner','dbo'
以上是兩個例子。
SQL Server中執行帶參數的存儲過程的方法是:
EXEC 存儲過程名字 '參數1','參數2',數值參數
EXEC 是一個關鍵字。
字元串參數使用單引號括起來,數值參數不需要使用單引號

④ oracle存儲過程,IN OUT 類型的參數怎麼傳參數

in out類型參數是過程運行開始會把參數值傳入過程,運行結束後會把參數值再傳出去。
比如說過程test(v_cs in out number);功能為把帶入的參數加1;
v_num:=1;
test(v_num);
dbms_output.put_line(v_num);
將輸出2;

⑤ oracle 存儲過程怎麼傳參數

create
table
p_proc(pid
number(2),pname
varchar2(20),pname_class
varchar2(20));
--用於存儲存儲過程和參數名的表並插入四條數據,insert
into
p_proc
values(1,'a','v1');insert
into
p_proc
values(2,'b','v2');insert
into
p_proc
values(3,'c','v3');insert
into
p_proc
values(4,'d','v4');
四個存儲過程的的狀況為:
create
or
replace
procere
v1(v_para
varchar2)asbegin
dbms_output.put_line(v_para);end;create
or
replace
procere
v2(v_para
varchar2)asbegin
dbms_output.put_line(v_para);end;create
or
replace
procere
v3(v_para
varchar2)asbegin
dbms_output.put_line(v_para);end;create
or
replace
procere
v4(v_para
varchar2)asbegin
dbms_output.put_line(v_para);end;如下調用存儲過程的存儲為(請忽略一些測試輸出):

⑥ 如何給SQLSERVER存儲過程傳遞數組參數

數組不能傳遞,變通的解決辦法是有的
思路如下:
1、將數組轉換為字元串格式(例如:a,b,c,d)
2、在資料庫內創建字元串分割為行的表值函數
3、若是需要將一個二維數組傳遞的話,需要將每列數據都格式化為1的方式,然後再用2的方式轉換為行,再將轉換後的數據組合為一個表
4、你就可以直接進行插入、編輯、刪除或查詢操作了。

⑦ mysql存儲過程傳入一個參數返回結果集

mysql中要獲得存儲過程的返回值,可以增加一個out參數,用來返回。
mysql中存儲過程的例子:
CREATE PROCEDURE addvoucher (
IN userid INT,
IN voucherid INT,
OUT result INT
)
BEGIN
SELECT
@endate_a := endate ,@batch_a := batch ,@c_count_a := c_count,
@isdead_a := isdead
FROM
t_voucher
WHERE
id = voucherid;

SET autocommit = 0;
IF EXISTS (
SELECT
*
FROM
t_user_voucher tuv,
t_voucher tv
WHERE
tv.id = tuv.voucherid
AND tv.batch =@batch_a
) THEN

SET result = 1;-- 已存在

SELECT
result;

ELSE

IF @c_count_a > 0 THEN

IF (
TO_DAYS(@endate_a) - TO_DAYS(NOW())
) > 0 THEN

⑧ SQL中存儲過程參數傳遞有哪幾種方法如何獲取存儲過程的返回值

參數傳遞?
參數有in參數、out參數、in out參數
變數可用set和select賦值

獲取返回值只需設置變數、到時輸出就行

單行數據定義固定變數數、
如果結果是數據集、要用游標cursor

⑨ 執行存儲過程怎麼傳入參數

在Oracle中定義存儲過程的時候有定義傳入參數的個數和類型的。

createprocerepro_name(v_para1invarchar2,v_para2invarchar2)

調用的時候:

declare
v_para1varchar2(30):='parameter1';
v_para2varchar2(30):='parameter2';
begin
pro_name(v_para1,v_para2);
end;
/
熱點內容
手機網頁緩存視頻 發布:2025-02-03 23:38:48 瀏覽:832
agnes演算法 發布:2025-02-03 23:38:05 瀏覽:35
私密上傳在哪 發布:2025-02-03 23:33:04 瀏覽:1002
切冰解壓 發布:2025-02-03 23:30:36 瀏覽:768
解壓攪拌聲 發布:2025-02-03 23:11:35 瀏覽:838
伺服器硬碟誤拔了怎麼辦 發布:2025-02-03 23:05:26 瀏覽:875
易手遙控連接密碼是多少 發布:2025-02-03 22:44:26 瀏覽:172
sql安裝程序配置伺服器失敗 發布:2025-02-03 22:44:25 瀏覽:594
可以寫腳本的點擊器 發布:2025-02-03 22:44:22 瀏覽:622
c演算法代碼 發布:2025-02-03 22:42:20 瀏覽:866