3

我是 SQL 新手,正在尝试编写存储过程。我在获取默认值作为输出结果时遇到了一些困难。

我有 2 张桌子:

学生输入

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

学生输入详细信息

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

我正在尝试调用ParameterNamefromStudent_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

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

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

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

4

1 回答 1

7

非常简单和容易:您的存储过程需要两个参数-@ParameterName并且@ParameterValue- 但您的调用只提供一个......

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

DECLARE @ParameterValue varchar(50) 

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

PRINT 'Result is: ' + @ParameterValue

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

于 2012-12-12T17:23:47.510 回答