C# 不断获取错误:过程或函数';usp#U StoredProcName';应为参数'@输入值';,这是没有提供的

C# 不断获取错误:过程或函数';usp#U StoredProcName';应为参数'@输入值';,这是没有提供的,c#,sql,sql-server,stored-procedures,parameters,C#,Sql,Sql Server,Stored Procedures,Parameters,我有一个简单的存储过程,它需要1个输入参数和2个输出参数: CREATE PROCEDURE [dbo].[usp_StoredProcName] @inputVal nvarchar(255), @isError bit OUTPUT, @errorInfo nvarchar(255) OUTPUT AS BEGIN DECLARE @totalRow int = 0; DECLARE @inputValID uniqueidentifier; SET @isErro

我有一个简单的存储过程,它需要1个输入参数和2个输出参数:

CREATE PROCEDURE [dbo].[usp_StoredProcName]
    @inputVal nvarchar(255),
    @isError bit OUTPUT,
    @errorInfo nvarchar(255) OUTPUT
AS BEGIN
DECLARE @totalRow int = 0;
DECLARE @inputValID uniqueidentifier;

SET @isError = 1;
SET @errorInfo = '';

SELECT @inputValID = [inputValID]
FROM testTable
WHERE inputVal = @inputVal;

IF @inputValID IS NULL
BEGIN
    SET @isError = 0;
    SET @errorInfo = 'inputVal not found';
    RETURN
END
END
为了执行这个参数化存储过程,我使用了两个C#方法,它们都返回以下错误:

过程或函数“sp_StoredProcName”需要参数“@inputVal”,但未提供该参数

方法1(调用参数化存储过程):

方法2(调用参数化存储过程):

上述两种c#方法返回相同的错误:

过程或函数“sp_StoredProcName”需要参数“@inputVal”,但未提供该参数

请告诉我,在执行存储过程的C#代码中,我做错了什么

很明显,我在两个方法中都传递了参数值,但我不明白为什么它一直显示这个错误


非常感谢你

您正在创建过程之后的行中将@InputVal设置为输入参数

CREATE PROCEDURE [dbo].[sp_StoredProcName]

@inputVal nvarchar(255),
然后再进一步创建一个唯一标识符

DECLARE @inputVal uniqueidentifier;

这不是有效的语法。改变一个或另一个。如果您不想接受输入参数(这将消除您询问的错误),请删除第一个。

您已将inputVal声明为参数和过程变量?旁注:您不应在存储过程中使用
sp
前缀。微软已经这样做了,而且你确实有可能在将来的某个时候发生名称冲突。最好只是简单地避免使用
sp.
并使用其他东西作为前缀,或者根本不使用前缀!非常感谢。是的,关于sp_uu前缀,这是一个很好的选择,但是实际存储的进程不是以sp_uu前缀开始的。我写这篇文章只是为了举例说明。您好,我已经更新了我的存储过程,因为有输入错误。@inputVal和其他值分别声明。对于需要inputVal参数的存储过程,我确实遇到了相同的错误。请看一下我的存储过程和2个C#方法调用。非常感谢。存储过程修复了,因为那是我的打字错误。尽管如此,我仍然得到相同的错误:过程或函数“usp_StoredProcName”需要参数“@inputVal”,但未提供该参数
CREATE PROCEDURE [dbo].[sp_StoredProcName]

@inputVal nvarchar(255),
DECLARE @inputVal uniqueidentifier;