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

存儲過程參數list

發布時間: 2024-11-21 12:08:29

存儲過程:帶參數類型有哪些

有in,out,inout
in:表示參數從外部傳入到裡面使用(過程內部使用),可以是直接數據也可以是保存數據的變數
out:表示參數是從過程裡面吧數據保存到變數中,交給外部使用,傳入的必須的變數
inout:數據可以從外部傳入到過程內部使用,同時內部操作之後,又會將數據返還給外部

Ⅱ 如何使用Oracle存儲過程的一個簡單例子

樓主您好
---創建表
create table TESTTABLE
(
id1 VARCHAR2(12),
name VARCHAR2(32)
)
select t.id1,t.name from TESTTABLE t
insert into TESTTABLE (ID1, NAME)
values ('1', 'zhangsan');

insert into TESTTABLE (ID1, NAME)
values ('2', 'lisi');

insert into TESTTABLE (ID1, NAME)
values ('3', 'wangwu');

insert into TESTTABLE (ID1, NAME)
values ('4', 'xiaoliu');

insert into TESTTABLE (ID1, NAME)
values ('5', 'laowu');
---創建存儲過程
create or replace procere test_count
as
v_total number(1);
begin
select count(*) into v_total from TESTTABLE;
DBMS_OUTPUT.put_line('總人數:'||v_total);
end;
--准備
--線對scott解鎖:alter user scott account unlock;
--應為存儲過程是在scott用戶下。還要給scott賦予密碼
---alter user scott identified by tiger;
---去命令下執行
EXECUTE test_count;
----在ql/spl中的sql中執行
begin
-- Call the procere
test_count;
end;

create or replace procere TEST_LIST
AS
---是用游標
CURSOR test_cursor IS select t.id1,t.name from TESTTABLE t;
begin
for Test_record IN test_cursor loop---遍歷游標,在列印出來
DBMS_OUTPUT.put_line(Test_record.id1||Test_record.name);
END LOOP;
test_count;--同時執行另外一個存儲過程(TEST_LIST中包含存儲過程test_count)
end;
-----執行存儲過程TEST_LIST
begin
TEST_LIST;
END;
---存儲過程的參數
---IN 定義一個輸入參數變數,用於傳遞參數給存儲過程
--OUT 定義一個輸出參數變數,用於從存儲過程獲取數據
---IN OUT 定義一個輸入、輸出參數變數,兼有以上兩者的功能
--這三種參數只能說明類型,不需要說明具體長度 比如 varchar2(12),defaul 可以不寫,但是作為一個程序員最好還是寫上。

---創建有參數的存儲過程
create or replace procere test_param(p_id1 in VARCHAR2 default '0')
as v_name varchar2(32);
begin
select t.name into v_name from TESTTABLE t where t.id1=p_id1;
DBMS_OUTPUT.put_line('name:'||v_name);
end;
----執行存儲過程
begin
test_param('1');
end;

default '0'

---創建有參數的存儲過程
create or replace procere test_paramout(v_name OUT VARCHAR2 )
as
begin
select name into v_name from TESTTABLE where id1='1';
DBMS_OUTPUT.put_line('name:'||v_name);
end;
----執行存儲過程
DECLARE
v_name VARCHAR2(32);
BEGIN
test_paramout(v_name);
DBMS_OUTPUT.PUT_LINE('name:'||v_name);
END;
-------IN OUT
---創建存儲過程
create or replace procere test_paramINOUT(p_phonenumber in out varchar2)
as
begin
p_phonenumber:='0571-'||p_phonenumber;
end;

----
DECLARE
p_phonenumber VARCHAR2(32);
BEGIN
p_phonenumber:='26731092';
test_paramINOUT(p_phonenumber);
DBMS_OUTPUT.PUT_LINE('新的電話號碼:'||p_phonenumber);
END;
-----sql命令下,查詢當前用戶的存儲過程或函數的源代碼,
-----可以通過對USER_SOURCE數據字典視圖的查詢得到。USER_SOURCE的結構如下:

SQL> DESCRIBE USER_SOURCE ;
Name Type Nullable Default Comments

---- -------------- -------- -------
-------------------------------------------------------------------------------------------------------------
NAME VARCHAR2(30) Y Name of the object

TYPE VARCHAR2(12) Y Type of the object: "TYPE", "TYPE BODY", "PROCEDURE", "FUNCTION",
"PACKAGE", "PACKAGE BODY" or "java SOURCE"
LINE NUMBER Y Line number of this line of
source

TEXT VARCHAR2(4000) Y Source text

SQL>
---查詢出存儲過程的定義語句
select text from user_source WHERE NAME='TEST_COUNT';
----查詢存儲過程test_paramINOUT的參數
SQL> DESCRIBE test_paramINOUT;
Parameter Type Mode Default?
------------- -------- ------ --------
P_PHONENUMBER VARCHAR2 IN OUT
SQL>
---查看當前的存儲過程的狀態是否正確,
---VALID為正確,INVALID表示存儲過程無效或需要重新編譯
SELECT STATUS FROM USER_OBJECTS WHERE OBJECT_NAME='TEST_COUNT';
-----如果要檢查存儲過程或函數的依賴性,可以通過查詢數據字典USER_DENPENDENCIES來確定,該表結構如下:
SQL> DESCRIBE USER_DEPENDENCIES;
Name Type Nullable Default Comments
-------------------- ------------- -------- ------- ----------------------------------------------------------
NAME VARCHAR2(30) Name of the object
TYPE VARCHAR2(17) Y Type of the object
REFERENCED_OWNER VARCHAR2(30) Y Owner of referenced object (remote owner if remote object)
REFERENCED_NAME VARCHAR2(64) Y Name of referenced object
REFERENCED_TYPE VARCHAR2(17) Y Type of referenced object
REFERENCED_LINK_NAME VARCHAR2(128) Y Name of dblink if this is a remote object
SCHEMAID NUMBER Y
DEPENDENCY_TYPE VARCHAR2(4) Y
SQL>
---查詢存儲過程TEST_COUNT的依賴關系
SELECT REFERENCED_NAME,REFERENCED_TYPE FROM USER_DEPENDENCIES WHERE NAME='TEST_COUNT';

Ⅲ java中如何調用資料庫的存儲過程

Java調用存儲過程的方法是通過調用Connection的實例方法prepareCall,prepareCall方法返回CallableStatement對象用於填充存儲過程的參數。prepareCall方法形參是調用存儲過程的sql語句,此參數的語法格式如下:

{callstoredProcereName(parameter-list)}

其中,storedProcereName是存儲過程名稱,parameter-list是存儲過程參數列表。

例如,存儲過程名為usp_test,有兩個輸入參數a,b。則調用代碼看起來如下所示:

=connection.prepareCall("{callusp_test(?,?)}");
callableStatement.setObject("a","value-1");
callableStatement.setObject("b","value-2");
callableStatement.execute();

Ⅳ 存儲過程的參數類型哪幾種

存儲過程共有IN、OUT、INOUT三種參數類型,格式如下:CREATEPROCEDURE(IN|OUT|INOUT參數名數據類型...)存儲過程可以沒有參數,但如果在使用過程需要用到參數,需按上面的格式進行定義。

第一項:IN|OUT|INOUT,表示參數的類型,選擇其中的一種即可;第二項:參數名,表示參數的名稱;第三項:數據類型,表示這個參數的數據類型,如int、float、double、varcahr等;第四項:「…」,表示參數可以定義多個,如果有多個參數時按前三項的格式定義即可,每個參數間用英文狀態下的逗號「

Ⅳ 1,存儲過程和函數的區別

存儲過程和函數目的是為了 可重復地 執行操作資料庫的sql語句的集合。
區別是寫法和調用上。
寫法上:存儲過程的參數列表可以有輸入參數、輸出參數、可輸入輸出的參數;
函數的參數列表只有輸入參數,並且有return <返回值類型,無長度說明>。
返回值上:
存儲過程的返回值,可以有多個值,
函數的返回值,只有一個值。
調用方式上:
存儲過程的調用方式有:
1)、exec <過程名>;
2)、execute <過程名>;
3)、在PL/SQL語句塊中直接調用。
函數的調用方式有:
在PL/SQL語句塊中直接調用。
具體分為:
----調用FUNCTION add_three_numbers
----1. 位置表示法調用函數
BEGIN
dbms_output.put_line(add_three_numbers(2,4,5));
END;
----2. 命名表示法調用函數
BEGIN
dbms_output.put_line(add_three_numbers(b=>3, a=>4,c=>2));
END;
----3. 混合使用位置表示法和命名表示法調用函數
BEGIN
dbms_output.put_line(add_three_numbers(3, b=>4,c=>2));
END;
----4. 排除表示法
BEGIN
dbms_output.put_line(add_three_numbers(12,c=>2));
END;
----5. sql調用表示法 --混合表示法
SELECT add_three_numbers(3, b=>4,c=>2) FROM DUAL;

----1. 該函數接受3個可選參數,返回3個數字的和
CREATE OR REPLACE FUNCTION add_three_numbers
(
a NUMBER:=0, b NUMBER:=0, c NUMBER:=0
)
RETURN NUMBER IS
BEGIN
RETURN a+b+c;
END;

存儲過程:
基本語法:
create procere <過程名>(<參數列表,無參時忽略>)
as|is
變數聲明、初始化
begin
業務處理、邏輯代碼
exception
異常捕獲、容錯處理
end <過程名>;
參數:<參數名> in|out|in out <參數類型,無長度說明> ,如:v_name varchar2
in:入參
out:出參
in out:出入參
註:as|is表示as或is
調用語法:
1)、exec <過程名>;
2)、execute <過程名>;
3)、在PL/SQL語句塊中直接調用。
例:
create or replace procere up_wap(v_param1 in out varchar2,v_param2 in out varchar2)
is
v_temp varchar2(20);
begin
dbms_output.put_line('交換前參數1:'||v_param1||' 參數2:'||v_param2);
v_temp:=v_param1;
v_param1:=v_param2;
v_param2:=v_temp;
dbms_output.put_line('交換後參數1:'||v_param1||' 參數2:'||v_param2);
exception
when others then dbms_output.put_line('There is a error when the procere up_wap executing!');
end up_wap;
/
-- 調用存儲過程
declare
v_param1 varchar2(20):='param1';
v_param2 varchar2(20):='param2';
begin
up_wap(v_param1 => v_param1,v_param2 => v_param2);
end;
/

自定義函數(function)
基本語法:
create function <函數名>(<參數列表,無參時忽略>)
return <返回值類型,無長度說明>
as|is
變數聲明、初始化
begin
業務處理、邏輯代碼
return <返回的值>;
exception
異常捕獲、容錯處理
end <函數名>;
參數:in 入參
註:只有入參的類型。
在存儲過程和自定義函數中的參數的傳遞(入參和出參)不能使用%type或%rowtype匹配,不能使用空值null,但是存儲過程可以返回空值。
例:
create function uf_select_name_by_id_test(v_id in number)
return varchar2
is
v_name t_test.t_name%type;
begin
select t_name into v_name from t_test where t_id=v_id;
return v_name;
exception
when others then dbms_output.put_line('error');
end uf_select_name_by_id_test;
/
select uf_select_name_by_id_test(1) 姓名 from al;-- select調用
declare --pl/sql語句塊調用
v_name varchar2(20);
begin
v_name:=uf_select_name_by_id_test(1);
dbms_output.put_line('name = '||v_name);
end;
/

Ⅵ oracle存儲過程返回參數是一個cursor,怎麼轉換為list

這里返回的是個結果集.rs.next返回的是一行數據.直接rs.getXXX方法獲取.最好先聲明一個對象來存放各個值,然後再賦給list.以便於使用.

Ⅶ 創建存儲過程sql語句

1)過程名
存儲過程的名稱,默認在當前資料庫中創建。若需要在特定資料庫中創建存儲過程,則要在名稱前面加上資料庫的名稱,即db_name.sp_name。
需要注意的是,名稱應當盡量避免選取與MySQL內置函數相同的名稱,否則會發生錯誤。
2)過程參數
存儲過程的參數列表。其中,<參數名>為參數名,<類型>為參數的類型(可以是任何有效的MySQL數據類型)。當有多個參數時,參數列表中彼此間用逗號分隔。存儲過程可以沒有參數(此時存儲過程的名稱後仍需加上一對括弧),也可以有1個或多個參數。
MySQL存儲過程支持三種類型的參數,即輸入參數、輸出參數和輸入/輸出參數,分別用IN、OUT和INOUT三個關鍵字標識。其中,輸入參數可以傳遞給一個存儲過程,輸出參數用於存儲過程需要返回一個操作結果的情形,而輸入/輸出參數既可以充當輸入參數也可以充當輸出參數。

熱點內容
頭像上傳中 發布:2024-11-21 15:39:44 瀏覽:503
射門游戲源碼 發布:2024-11-21 15:14:58 瀏覽:984
php把圖片保存到本地 發布:2024-11-21 15:09:44 瀏覽:955
腳本岡田磨里 發布:2024-11-21 15:03:41 瀏覽:140
怎麼快速按鍵電腦配置 發布:2024-11-21 15:00:01 瀏覽:200
python下載目錄 發布:2024-11-21 15:00:00 瀏覽:449
shell腳本實例大全 發布:2024-11-21 14:32:28 瀏覽:796
建站php源碼 發布:2024-11-21 14:31:19 瀏覽:806
多線程編譯選項 發布:2024-11-21 14:21:50 瀏覽:303
海信智能電視怎麼看配置 發布:2024-11-21 14:21:46 瀏覽:632