存儲過程傳參數
❶ 執行存儲過程怎麼傳入參數
在Oracle中定義存儲過程的時候有定義傳入參數的個數和類型的。
sql">createprocerepro_name(v_para1invarchar2,v_para2invarchar2)
調用的時候:
declare
v_para1varchar2(30):='parameter1';
v_para2varchar2(30):='parameter2';
begin
pro_name(v_para1,v_para2);
end;
/
❷ 請問如何給DB2資料庫的存儲過程中 where 的in 條件傳參數
create
or
replace
procere
test(in
in_where
varchar(100))
--創建一個
存儲過程
test,並可以傳入字元串作為參數
declare
v_sql
varchar(512);
set
v_sql
=
'
delete
from
table1
where
field1
in
('
concat
in_where
concat
')
'
;
--
這里是把傳進來的where語句拼起來
execute
immediate
v_sql;
--這里是把語句進行執行
------
---類似以上這樣的存儲過程,使用以下的放在進行執行即可:call
test(
'
''001'',''002''
')
;
--內容中的一個『
需要使用
』『
進行
轉義
❸ ORACLE中如何為存儲過程傳遞參數
第一種:只讀。參數是只讀的,不能修改,即調用時傳遞進來的是常量,或者變數(但變數不能在存儲過程中修改正薯)。通常select及DML類型的存儲過程傳遞的是in類型的參數。
第二種:只寫。忽略調用語句傳遞的任何參數,並在函數(過程)內部給這些參數賦值,因此是只寫的。(這種情況是在函數或過程內部給參數重新賦值,但重新賦值後的參舉御者數是無法被外部調用的(好像游標類型的參數除外))
CREATE OR REPLACE PROCEDURE "SCOTT"."SWAP" (firstValue out
number, secondValue out number) is
temp number;
begin
temp := firstValue;
firstValue := secondValue;
secondValue := temp;
end swap;
外部調用:
set serveroutput on;
declare
firstVal number;
secondVal number;
begin
firstVal := 10;
secondVal := 20;
scott.swap(firstVal,secondVal);
dbms_output.put_line('first is ' || firstVal);
dbms_output.put_line('second is ' || secondVal);
end;
無法在外部訪問到firstValue與secondValue的值。此時列印出的結果為:
first is
second is
第三種:讀或寫。這可以完全控制參數,讀取傳遞的參數的值。可以再函數(過程)內部修改參數的值,在退出函數(過程)後,這些參數被賦給在函數內部寫入的值,這樣就可以返回多個值。(即入口參數寫入值後,可以傳遞到函數(過程)的外部,供外部調用的時候使用)
ps:函數中的返回值為如下幾種:
char; varchar2; number; integer; date; boolean; table; record
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 存儲過程 怎麼傳入參數
執行帶參數的存儲過程的方法如下:
Exec sp_configure 'allow updates',1 --允許更新系統表。
exec dbo.User_ChangeObjectOwnerBatch 'OldOwner','dbo'
以上是兩個例子。
SQL Server中執行帶參數的存儲過程的方法是:
EXEC 存儲過程名字 '參數1','參數2',數值參數
EXEC 是一個關鍵字。
字元串參數使用單引號括起來,數值參數不需要使用單引號
❺ oracle中調用存儲過程時傳遞參數值的3種方式。。
應該就是這三種吧。
1 , IN (參數值傳過來給存儲過程使用)
2, OUT(存儲過程返回結果給該參數)
3. IN OUT(存儲過程調用該參數的同時,最後還返回結果給調用的參數)
❻ 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>
❼ 存儲過程參數傳遞有幾種方法
參數傳遞?
參數有in參數、out參數、in
out參數
變數可用set和select賦值
獲取返回值只需設置變數、到時輸出就行
單行數據定義固定變數數、
如果結果是數據集、要用游標cursor
❽ 如何給DB2資料庫的存儲過程中 where 的in 條件傳參數
create
or
replace
procere
test(in
in_where
varchar(100))
--創建一個存儲過程test,並可以傳入字元串作為參數
declare
v_sql
varchar(512);
set
v_sql
=
'
delete
from
table1
where
field1
in
('
concat
in_where
concat
')
'
;
--
這里是把傳進來的where語句拼起來
execute
immediate
v_sql;
--這里是把語句進行執行---------類似以上這樣的存儲過程,使用以下的放在進行執行即可:call
test(
'
''001'',''002''
')
;
--內容中的一個『
需要使用
』『
進行轉義
❾ mysql的存儲過程怎麼傳入數組參數
沒試過往裡面傳數組,一般都是多傳幾個參數,把幾個參數放入SqlParameter[]中,然後cmd.Parameters.AddRange(pars);
創建方法:
SqlParameter[] paras = new SqlParameter[]
{
new SqlParameter("@PageIndex","ccc"),
new SqlParameter("@PageSize","ccc"),
new SqlParameter("@StrSql","ccc")
};
ccc就是你想傳入的值,帶@的就是你在存儲過程中定義的參數。
算是一種另類的數組吧。要不你就把所有條件組合成一個字元串,中間用特殊符號隔開,到資料庫用split方法再分回來,不過這個方法比較麻煩,不推薦
❿ 存儲過程傳入參數
num1 NUMBER := 181,182;
這句話錯了啊!
DECLARE
num1 NUMBER ;
BEGIN
num1:=181; ----181,182 是什麼意思? 是要一下子傳兩個數字進去嗎? 這樣做不可以的哦?
Pr_d2_delCar(num1);
END;