簡體   English   中英

調用存儲過程后傳遞參數

[英]Passing parameters after calling stored procedure

我有以下UDF:

create function fn_name
  (@first varchar(50),
   @middle  varchar(50),
   @last  Varchar(50))
returns varchar(100)
as
begin
   return 
      case
         when @middle is null then @first+' '+@Last
         when Len(@middle)=0   then @first+' '+@Last
         else @first+' '+@middle+' '+@Last
      end
 end

我正在考慮為上述功能創建一個存儲過程,但是這樣的方式是,我在調用該存儲過程后逐個傳遞參數。 在SQL Server中可以嗎? 如果是,怎么辦?

您實際上並不想為每個參數多次調用存儲過程。 那是一場噩夢,因為您必須在兩次呼叫之間保存狀態。 而是使用可選參數:

 create procedure usp_name (
    @first varchar(50) = '',
    @middle varchar(50) = '',
    @last varchar(50) = '',
    @name varchar(100) output
 )  
 as
 begin
      select @name = (case when @middle is null then @first+' '+@Last
                           when Len(@middle)=0   then @first+' '+@Last
                           else @first+' '+@middle+' '+@Last
                      end);
 end;  -- usp_name

現在,所有三個參數都是可選的。 如果您這樣調用它:

declare @name varchar(100);
exec @name = @name output;

然后它將返回'' 如果您致電:

declare @name varchar(100);
exec @first = 'Gordon', @last = 'Linoff', @name = @name output;

然后,您將獲得'Gordon Linoff'

並非在此示例中所有參數都是可選的。 當您指定默認值時,它們變為可選。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM