当前位置:首页 » 存储配置 » 存储过程有输入参数和输出参数

存储过程有输入参数和输出参数

发布时间: 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 14:36:14 浏览:671
安卓如何设置桌面返回键 发布:2025-02-06 13:58:15 浏览:48
bi可视化php 发布:2025-02-06 13:50:15 浏览:931
shell写脚本文件 发布:2025-02-06 13:47:32 浏览:231
健身器材脚本 发布:2025-02-06 13:46:36 浏览:856
怎么从手机里卸载存储卡 发布:2025-02-06 13:35:04 浏览:644
诛仙青云志2ftp 发布:2025-02-06 13:34:48 浏览:34
mill91编程 发布:2025-02-06 13:10:27 浏览:294
华为平板怎么储存服务器文件 发布:2025-02-06 12:49:21 浏览:482
php查询结果数组 发布:2025-02-06 12:31:05 浏览:717