C# 不断获取错误:过程或函数';usp#U StoredProcName';应为参数'@输入值';,这是没有提供的
我有一个简单的存储过程,它需要1个输入参数和2个输出参数: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
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;