调用存储过程时出现异常

时间:2009-09-25 12:03:12

标签: c# sql-server-2008 stored-procedures

我有一个SQL Server 2008数据库,并希望通过存储过程从C#-WCF访问表。 proc是一个简单的SELECT查询,它获取给定id的行并将结果填充到一些输出参数中:

PROCEDURE [dbo].[get_stammInfo] 
-- Add the parameters for the stored procedure here
    @id int,
    @strassenSchluessel int OUTPUT,
    @hausNummer int OUTPUT,
    @zusatz nvarchar(1) OUTPUT,
    ...
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for procedure here
SELECT @strassenSchluessel = strassenSchluessel, 
       @hausNummer = hausNummer,
       @zusatz = zusatz,
       ...
FROM gebaeudeStamm 
WHERE id = @id
END

在我的C#-Code中,我创建了一个命令对象,与数据库连接并将参数添加到命令对象。

当我调用ExecuteNonQuery时,它会抛出以下异常

  

{“Die Prozedur oder Funktion'getstammInfo'erwartet den'@ id'-Parameter,der nicht bereitgestellt wurde。”}转换为“过程或函数”getstammInfo'期望'   @ id'-参数,未提供“

问题听起来很清楚,但实际上我提供了 id参数。我可以在VS2008的直接窗口中查询它:

  

_command.Parameters [0]

     

{@ id}二

     

base {System.Data.Common.DbParameter}:{@ id}

     

CompareInfo:无

     

DbType:Int32

     

方向:输入

     

IsNullable:false

     

LocaleId:0

     

偏移:0

     

ParameterName:“@ id”

     

精度:0

     

比例:0

     

尺寸:0

     

SourceColumn:“”

     

SourceColumnNullMapping:false

     

SourceVersion:当前

     

SqlDbType:Int

     

SqlValue:{7112}

     

TypeName:“”

     

UdtTypeName:“”

     

价值:7112

     

XmlSchemaCollectionDatabase:“”

     

XmlSchemaCollectionName:“”

     

XmlSchemaCollectionOwningSchema:“”

正如您所看到的,id参数存在于Parameterscollection中,它具有与参数相同的类型,存储的proc期望。我不知道,可能是什么错误,但似乎错误消息是错误的,并且发生了一些其他错误......

这里的任何人都可以提示我 我应该找到错误吗?

1 个答案:

答案 0 :(得分:0)

请显示您用来调用该程序的代码。

您的问题是您在参数名称中添加了@符号。当您向SqlCommand添加参数时,请不要使用@符号。