SQL中的存储过程中的参数是什么意思?

时间:2018-01-15 14:53:39

标签: sql sql-server stored-procedures

创建存储过程时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 

2 个答案:

答案 0 :(得分:1)

参数允许与/从函数/过程及其调用者交换数据。在SQL中,存储过程有两种类型的参数,

  1. INPUT参数和
  2. OUTPUT或OUT参数
  3. INPUT参数接收作为参数传递的值(通过调用者),并且它在本地范围/块中保持可用(类似于局部变量),而OUTPUT参数用于声明返回类型&返回变量名。

    “INPUT”关键字未明确用于声明INPUT参数,而您必须对OUTPUT参数使用“OUTPUT”或“OUT”关键字。

    您不需要使用“DECLARE”关键字(类似于大多数其他语言,其中方法签名处的参数不需要显式数据类型声明)。

    在示例中请注意以下几点:

    1. @dob ”是一个INPUT参数(用作局部变量)
    2. @yr ”& “ @mths ”是OUTPUT参数(用于声明返回类型和返回变量名)
    3. 由于Proc有2个OUTPUT参数,因此它还有2个SELECT语句,以便返回2个值。
    4. 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参数将为您提供结果。