C# 获取C中的输出参数值#
我有一个带有输出参数的存储过程:C# 获取C中的输出参数值#,c#,sql,sql-server,stored-procedures,parameters,C#,Sql,Sql Server,Stored Procedures,Parameters,我有一个带有输出参数的存储过程: CREATE PROCEDURE [dbo].[myStoredProcedure] (@myValue NVARCHAR(100) OUTPUT) AS BEGIN SET @myValue = (SELECT myValue FROM myTable WHERE something = 1) SElECT @myValue; END 我的C#类: 这是我得到的一个例外: System.InvalidOperationExceptio
CREATE PROCEDURE [dbo].[myStoredProcedure]
(@myValue NVARCHAR(100) OUTPUT)
AS
BEGIN
SET @myValue = (SELECT myValue FROM myTable WHERE something = 1)
SElECT @myValue;
END
我的C#类:
这是我得到的一个例外:
System.InvalidOperationException:字符串[0]:Size属性具有
0的大小无效
我不明白的是,我以前使用过这段代码,除了在存储过程中,当我在数据库中创建新记录时,我使用IDENTITY()
获取输出值,因此类中的参数类型是INT。但在概念上它应该是相同的,但我想我错了,只是不知道为什么
我错过了什么
谢谢 您需要指定保存输出值所需的大小。发件人: 对于具有可变长度类型(例如nvarchar)的输出参数,参数的大小定义了保存输出参数的缓冲区的大小 将代码中输出参数的值设置为与存储过程中的值匹配:
newSqlParam.Size = 100;
默认值为0,这是导致异常的原因。您需要指定保存输出值所需的大小。发件人: 对于具有可变长度类型(例如nvarchar)的输出参数,参数的大小定义了保存输出参数的缓冲区的大小 将代码中输出参数的值设置为与存储过程中的值匹配:
newSqlParam.Size = 100;
默认值为0,这是导致异常的原因。代码>选择@myValue查询中的code>对
DBCmd.ExecuteNonQuery()无效代码>。选择@myValue查询中的code>对DBCmd.ExecuteNonQuery()无效代码>。