过程或函数“”需要参数'',这是未提供的

时间:2012-12-12 17:15:40

标签: sql sql-server database sql-server-2008 stored-procedures

我是SQL新手并尝试编写存储过程。我很难将默认值作为输出结果。

我有2张桌子:

Student_Input

InputID SectionID  ParameterName    Sequence
------------------------------------------------     
  1     100        FirstName           1 
  2     100        MiddleName          2  
  3     100        LastName            3  

Student_Input_details

ParameterName   ParameterValue      DefaultValue
-----------------------------------------------------     
FirstName          John                  1    
FirstName          Troy                  0
FirstName          Mark                  0  

我尝试从ParameterName调用Student_Input,并将Student_Input_Details的默认值作为一个表中的输出。我正在尝试以下查询,但我收到以下错误:

  

Msg 201,Level 16,State 4,Procedure Getparameterdefaultvalues,Line 0
  过程或函数'Getparameterdefaultvalues'需要参数'@ParameterValue',这是未提供的。

我相信我错过了一些重要的事情。

我的查询如下。我正在学习,这可能是一个简单的问题。 THX ........

CREATE PROCEDURE Getparameterdefaultvalues
(
    @ParameterName varchar(50) ,
    @ParameterValue varchar(50) OUT
)
AS
BEGIN
    SELECT @ParameterValue = DefaultValue FROM ParameterInput_Values
    WHERE ParameterName=@ParameterName 
END
DECLARE @ParameterValue varchar(50) 
EXEC Getparameterdefaultvalues @ParameterName = 1, @ParameterValue OUTPUT
PRINT 'Result is: ' + @ParameterValue

我需要结果(例如ParameterName应该只在运行时显示其默认值):

ParameterName   ParameterValue      
---------------------------------- 
FirstName         John

我已尝试过其他博客,但无法解决此问题。道歉如果我的问题没有那么清楚。任何帮助都会很棒!!谢谢

1 个答案:

答案 0 :(得分:7)

非常简单易用:您的存储过程需要两个参数 - @ParameterName@ParameterValue - 但您的通话仅提供一个 ...

您应该像这样调用您的存储过程:

DECLARE @ParameterValue varchar(50) 

EXEC Getparameterdefaultvalues @ParameterName = 1, @ParameterValue = @ParameterValue OUTPUT

PRINT 'Result is: ' + @ParameterValue

另外:您将检索到的值作为输出参数返回 - 因此您将单个值返回到变量中 - 您没有返回结果集(行/列) )。