新聞中心
ORACLE中如何為存儲過程傳遞參數(shù)?
第一種:只讀。參數(shù)是只讀的,不能修改,即調(diào)用時傳遞進(jìn)來的是常量,或者變量(但變量不能在存儲過程中修改)。通常select及DML類型的存儲過程傳遞的是in類型的參數(shù)。
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)合陽免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
第二種:只寫。忽略調(diào)用語句傳遞的任何參數(shù),并在函數(shù)(過程)內(nèi)部給這些參數(shù)賦值,因此是只寫的。(這種情況是在函數(shù)或過程內(nèi)部給參數(shù)重新賦值,但重新賦值后的參數(shù)是無法被外部調(diào)用的(好像游標(biāo)類型的參數(shù)除外))
CREATE OR REPLACE? PROCEDURE "SCOTT"."SWAP" (firstValue out
number, secondValue out? number) is
temp number;
begin
temp := firstValue;
firstValue := secondValue;
secondValue := temp;
end swap;
外部調(diào)用:
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的值。此時打印出的結(jié)果為:
first is
second is
第三種:讀或?qū)?。這可以完全控制參數(shù),讀取傳遞的參數(shù)的值。可以再函數(shù)(過程)內(nèi)部修改參數(shù)的值,在退出函數(shù)(過程)后,這些參數(shù)被賦給在函數(shù)內(nèi)部寫入的值,這樣就可以返回多個值。(即入口參數(shù)寫入值后,可以傳遞到函數(shù)(過程)的外部,供外部調(diào)用的時候使用)
ps:函數(shù)中的返回值為如下幾種:
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 /
Procedure 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 procedure successfully completed.
oracle 中用什么命令執(zhí)行一個帶參數(shù)的存儲過程
具體如下:
1、第一步,創(chuàng)建一個新的存儲過程,見下圖,轉(zhuǎn)到下面的步驟。
2、第二步,完成上述步驟后,修改存儲過程。
此存儲過程具有一個輸入?yún)?shù)(pid)和一個輸出參數(shù),即通過用戶id查詢用戶名并返回名稱,見下圖,轉(zhuǎn)到下面的步驟。
3、第三步,完成上述步驟后,調(diào)試存儲過程,找到新創(chuàng)建的存儲過程,右鍵單擊[test]按鈕,見下圖,轉(zhuǎn)到下面的步驟。
4、第四步,完成上述步驟后,修改id值,然后單擊左上角的“倒三角”按鈕以開始調(diào)試,見下圖,轉(zhuǎn)到下面的步驟。
5、第五步,完成上述步驟后,按[CTRL +
N]進(jìn)行單步調(diào)試,按[CTRL + O]單步調(diào)試,按[CTRL + T]退出調(diào)試,或者單擊調(diào)試工具進(jìn)行調(diào)試,見下圖,轉(zhuǎn)到下面的步驟。
6、第六步,完成上述步驟后,可以在窗口底部輸入變量名稱,以觀察變量的變化,見下圖,轉(zhuǎn)到下面的步驟。
7、第七步,完成上述步驟后,可以查看調(diào)試結(jié)果,見下圖。這樣,就解決了這個問題了。
oracle帶參(傳入,傳出)的存儲過程怎么執(zhí)行
1、新建存儲過程,Create or Replace??Procedure CHK_SYS_EMP 檢查系統(tǒng)工號。
2、定義參數(shù)及變量:(TREV IN VARCHAR2,TRES OUT VARCHAR2) IS C_EMP VARCHAR2(25)。
3、存儲過程框架用Begin開始,End結(jié)束。
4、查看需要調(diào)用表的結(jié)構(gòu)以及相關(guān)字段。會用到表中的 EMP_NO ENABLED。
5、存儲過程按需添加SQL語句。
6、程序運(yùn)行測試OK。
oracle怎么調(diào)用帶參數(shù)的存儲過程
sqlplus或者PL/SQL SQL窗口輸入(單獨(dú)調(diào)用存儲過程):無參數(shù)EXEC 過程名;或者BEGIN過程名END; IN 參數(shù)EXEC 過程名(入?yún)?shù)..);或者BEGIN過程名(入?yún)?shù)...)END; OUT參數(shù),IN OUT參數(shù)variable 綁定變量名 數(shù)據(jù)類型; //定義一個變量接收出參數(shù)的值;EXEC 過程名(:綁定變量名);
vb.net 如何使oracle語句帶參數(shù)
oracle語句帶參數(shù)查詢在vb.net中的應(yīng)用。
1、創(chuàng)建數(shù)據(jù)庫連接:
Dim myConnection As OleDbConnection
Dim myOracleDataAdapter As OleDbDataAdapter
myConnection = New OleDbConnection("Provider=OraOLEDB.Oracle.1;Data _
Source=OraDb_192.168.1.148;user id=scott;password=tiger")
myOracleDataAdapter = New OleDbDataAdapter("select * from user_tables", myConnection)
Dim myDataSet As DataSet = New DataSet()
Dim myDataRow As DataRow
myOracleDataAdapter.Fill(myDataSet, "user_tables")
Console.WriteLine(myDataSet.Tables("dept").Rows(0)(0))
Console.WriteLine(myDataSet.Tables("user_tables").Columns(0).ColumnName)
Console.ReadLine();
2、如果用戶按照上面所示輸入 CLERK,則數(shù)據(jù)庫接收的命令文本如下:
select count(ename) from emp where job = 'CLERK'
執(zhí)行結(jié)果如下:
cmd.CommandText = "select count(ename) from emp where " _
+ "job = '" + TextBox1.Text + "'" ' VB.NET
ORACLE中如何為存儲過程傳遞參數(shù)
給你一個 傳遞參數(shù)的例子
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 /
Procedure 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 procedure successfully completed.
SQL
名稱欄目:oracle怎么帶參數(shù) oracle數(shù)據(jù)庫參數(shù)
文章起源:http://fisionsoft.com.cn/article/hpiceo.html