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

Joy*_*979 3 sql database sql-server stored-procedures sql-server-2008

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

我有2张桌子:

Student_Input:

InputID SectionID  ParameterName    Sequence
------------------------------------------------     
  1     100        FirstName           1 
  2     100        MiddleName          2  
  3     100        LastName            3  
Run Code Online (Sandbox Code Playgroud)

Student_Input_details:

ParameterName   ParameterValue      DefaultValue
-----------------------------------------------------     
FirstName          John                  1    
FirstName          Troy                  0
FirstName          Mark                  0  
Run Code Online (Sandbox Code Playgroud)

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

消息201,级别16,状态4,过程Getparameterdefaultvalues,行0
过程或函数'Getparameterdefaultvalues'期望参数'@ParameterValue',它未提供.

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

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

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
Run Code Online (Sandbox Code Playgroud)

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

ParameterName   ParameterValue      
---------------------------------- 
FirstName         John
Run Code Online (Sandbox Code Playgroud)

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

mar*_*c_s 7

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

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

DECLARE @ParameterValue varchar(50) 

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

PRINT 'Result is: ' + @ParameterValue
Run Code Online (Sandbox Code Playgroud)

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