2012-12-12 51 views
3

我是新来的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 

我想打电话从Student_InputParameterNameStudent_Input_Details为它的默认值输出i一张桌子。我正在尝试以下查询,但我得到以下错误:

Msg 201, Level 16, State 4, Procedure Getparameterdefaultvalues, Line 0
Procedure or function 'Getparameterdefaultvalues' expects parameter '@ParameterValue', which was not supplied.

我相信我在这里丢失了重要的东西。

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

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

我需要像结果(即ParameterName只能显示在运行时的默认值):

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

我已经试过其他博客,但不能解决此问题。道歉如果我的问题不是很清楚。任何帮助将是伟大的! THX

+2

请使用{}按钮正确格式化代码示例。 –

回答

7

相当简单和容易:你的存储过程,预计两个参数 - @ParameterName@ParameterValue - 但你的电话仅供一个 ...

你应该打电话给你的存储过程是这样的:

DECLARE @ParameterValue varchar(50) 

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

PRINT 'Result is: ' + @ParameterValue 

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

+0

嗨,我试着用你的查询,但我得到以下错误:(必须通过参数2号和后续参数'@name = value'。'窗体'@name = value'后,所有后续参数必须以'@name = value'的形式传递。)........... – Joy1979

+0

@ Joy1979:更新了我的响应 - 您正在使用哪个**版本的** SQL Server? –

+0

我正在使用SQL2008r2..thx – Joy1979

相关问题