當前位置:首頁 » 存儲配置 » 存儲過程有輸入參數和輸出參數

存儲過程有輸入參數和輸出參數

發布時間: 2025-02-06 11:55:32

Ⅰ 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;
/

Ⅱ sql server存儲過程的參數有哪些類型

SQL Server存儲過程是SQL資料庫的重要組成部分,其中可以用到許多參數。在SQL Server存儲過程中,支持輸入(Input)、輸出參數(Output),也支持返回值參數(ReturnValue)。
返回值參數不是一個形參,而類似於編程中的返回值類型。它都是通過Return語句來返回的,而且在SQL Server中,必須返回INT型的數據,而且很顯然,只能有一個返回值,因為RETURN語句其實是會終止SQL Server存儲過程的。
例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

ALTER PROCEDURE [dbo].[GetCustomers]
(@rowcount INT OUTPUT)
AS
SELECT [CustomerID]
,[CompanyName]
,[ContactName]
,[ContactTitle]
,[Address]
,[City]
,[Region]
,[PostalCode]
,[Country]
,[Phone]
,[Fax]
FROM [Northwind].[dbo].[Customers]
SET @rowcount=@@rowcount

Ⅲ 創建一個帶輸入參數和輸出參數的存儲過程

create proc Tproc
@id nchar(10),
@name nchar(20),
@sex nchar(10)
as
begin
declare @hasData nchar(10)
select @hasData=id from S where id=@id
if @hasData!=''
begin
print '學號重復'
return
end
if @name=''
begin
print '名字不能為空'
return
end
if(@sex!='男' and @sex!='女')
begin
print '性別只能是男或女'
return
end
else
begin
insert into S values(@id,@name,case @sex when '男' then 1 when '女' then 0 end)
if(@@ROWCOUNT>0)
print '記錄成功插入!'
else
print '記錄未成功插入!'
end
end

不知道是否符合你的要求,歡迎討論!

Ⅳ sql server 中 一個要輸入參數和輸出參數的存儲過程。

第一步:點擊資料庫下的「可編程性」,選擇「存儲過程」,點擊滑鼠右鍵,選擇「新建存儲過程」
第二步:在create
PROCEDURE
後輸入存儲過程的名字,緊跟著的就是定義存儲過程的參數,接下來就可以去編寫自己所需要組裝的存儲過程語句了
注意,怕寫的不對,可以執行下,想驗證sql語句是否正確,就使用print輸出下
第三步:點擊上面的執行,存儲過程就寫好了,要怎麼調用呢,在sqlserver的語句查詢框中,輸入exec
存儲過程名
參數,執行就可以了。

Ⅳ oracle中怎麼執行帶有輸出參數的存儲過程,在程序中我知道怎麼調用,

1、新建一個存儲過程(Procere)。

Ⅵ sql server 中 一個要輸入參數和輸出參數的存儲過程。

1、首先我們需要打開SQL Server Managment管理工具,新建一個表。

Ⅶ 設計一個存儲過程,要求有兩個參數(輸入和輸出),該存儲過程能夠返回指定欄位(輸入)的最大值(輸出)

--設計一個存儲過程,要求有兩個參數(輸入和輸出),該存儲過程能夠返回指定欄位(輸入)的最大值(輸出)
GO
IF exists (SELECT * FROM sysobjects WHERE id=object_id(N'Test_Procere'))
DROP PROCEDURE Test_Procere
GO
CREATE PROCEDURE Test_Procere
@Input INT, --輸入參數
@Output INT OUTPUT --指定參數為輸出參數
AS
BEGIN
SELECT @Output=MAX(<指定列>) FROM <表> --給輸出參數賦值
SELECT <指定列> FROM <表> WHERE <條件> --返回的結果集
END

Ⅷ 創建存儲過程中有兩個創建參數。一處是在AS前面,另一處是在AS 後面,有什麼區別

AS前面的是輸入、輸出參數,AS後的是函數的返回值。
例如:create procere proc_a (para_a in varchar, para_b out number) as number
para_a是輸入參數
para_b是輸出參數
而proc_a的返回值是number型的,如果有這個東西,則必須在函數內return一個值或游標。
調用方法如下:
var_ret number; --定義一個接收函數返回的變數
var_ret:=proc_a('a',100); --調用函數並接收返回值賦給var_ret

熱點內容
均線差演算法 發布:2025-02-06 15:13:22 瀏覽:459
androidbrowser 發布:2025-02-06 15:09:49 瀏覽:622
勇敢的心ftp 發布:2025-02-06 15:09:03 瀏覽:327
php日誌分析 發布:2025-02-06 15:08:19 瀏覽:874
36腳本大廳作者 發布:2025-02-06 14:55:53 瀏覽:408
買電腦配送伺服器嗎 發布:2025-02-06 14:54:58 瀏覽:243
伺服器怎麼刪除資源 發布:2025-02-06 14:36:14 瀏覽:672
安卓如何設置桌面返回鍵 發布:2025-02-06 13:58:15 瀏覽:49
bi可視化php 發布:2025-02-06 13:50:15 瀏覽:932
shell寫腳本文件 發布:2025-02-06 13:47:32 瀏覽:231