SQL 过程或函数“”需要参数 '',该参数未提供

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/13845082/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-01 12:35:51  来源:igfitidea点击:

Procedure or function “” expects parameter '', which was not supplied

sqlsql-serverdatabasesql-server-2008stored-procedures

提问by Joy1979

I am new to SQL and trying to write a stored procedure. I am having some difficulties to get default values as an output result.

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

I have 2 table:

我有2张桌子:

Student_Input:

学生输入

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

Student_Input_details:

Student_Input_details:

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

I am trying to call ParameterNamefrom Student_Inputand Its default value from Student_Input_Detailsas an output in one table. I am trying with following query but I am getting following error:

我正在尝试调用ParameterNamefromStudent_Input及其默认值 fromStudent_Input_Details作为一个表中的输出。我正在尝试使用以下查询,但出现以下错误:

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

消息 201,级别 16,状态 4,过程 Getparameterdefaultvalues,第 0 行
过程或函数“Getparameterdefaultvalues”需要参数“@ParameterValue”,但未提供。

I am sure I am missing something important here.

我确定我在这里遗漏了一些重要的东西。

My query is below. I am learning , it may be an easy question. 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

I need result like (i.e. ParameterNameshould only display its default value at runtime):

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

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

I have tried on other blogs but couldn't resolve this. Apologies If my question is not so cleared. Any help would be great!! Thx

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

回答by marc_s

Pretty simple and easy: your stored procedure expects two parameters- @ParameterNameand @ParameterValue- but your call only supplies one...

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

You should call your stored procedure like this:

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

DECLARE @ParameterValue varchar(50) 

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

PRINT 'Result is: ' + @ParameterValue

Also: you're returning the retrieved value as an output parameter- so you're getting back a single value into a variable - you're not getting back a result set (rows/columns).

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