创建存储过程时SQL Server中参数的定义是什么?它是声明的变量吗?例如
declare @snapLY table (hotel_id tinyint, import_date date)
insert into @snapLY select hotel_id, max(import_date) from MYTABLE
group by hotel_id
答案 0 :(得分:1)
参数允许与/从函数/过程及其调用者交换数据。在SQL中,存储过程有两种类型的参数,
INPUT参数接收作为参数传递的值(通过调用者),并且它在本地范围/块中保持可用(类似于局部变量),而OUTPUT参数用于声明返回类型&返回变量名。
“INPUT”关键字未明确用于声明INPUT参数,而您必须对OUTPUT参数使用“OUTPUT”或“OUT”关键字。
您不需要使用“DECLARE”关键字(类似于大多数其他语言,其中方法签名处的参数不需要显式数据类型声明)。
在示例中请注意以下几点:
CREATE PROCEDURE CalcAge2 @dob date, @yr int OUTPUT, @mths int OUTPUT AS Select @yr = (DateDiff(Day, @dob, GetDate()))/365; Select @mths = ((DateDiff(Day, @dob, GetDate()))%365) / 30.5;
- 使用OUTPUT参数调用存储过程:
DECLARE @yr int, @mths int EXEC CalcAge2 '20010225', @yr OUTPUT, @mths OUTPUT SELECT 'You are '+Cast(@yr As varchar)+' years & '+Cast(@mths As varchar)+' months old'
HTH。
答案 1 :(得分:0)
它与函数参数/参数相同。但您可以使用IN或OUT关键字指定输入和输出参数。 IN参数将从用户获取输入,OUT参数将为您提供结果。