当前位置: 代码迷 >> ASP.NET >> C#net 里面 Parameter 有关问题
  详细解决方案

C#net 里面 Parameter 有关问题

热度:10806   发布时间:2013-02-26 00:00:00.0
C#.net 里面 Parameter 问题
异常详细信息:   System.Exception:   将   nvarchar   值   '204,215 '   转换为数据类型为   int   的列时发生语法错误。
SQL语句:
SELECT   TOP   6   *   FROM   V_Attach   WHERE   attachTypeId   =   @attachTypeId   AND   destinationId   in(   @destinationId)

Parameter.Add( "@destinationId ",   "204,215 ");  


------解决方案--------------------------------------------------------
会被解释成这样:
SELECT TOP 6 * FROM V_Attach WHERE attachTypeId = @attachTypeId AND destinationId in( '204,215 ')
所以可样写:
Begin
declare @Sql nvarchar(4000);
Set @Sql =N '
SELECT TOP 6 * FROM V_Attach WHERE attachTypeId = @attachTypeId AND destinationId in( ' + @destinationId + ')
';
exec (@Sql)
end
------解决方案--------------------------------------------------------
sp_xml_preparedocument在一次提交多条数据的时候比较好用

给你个例子:
@xmldata 就是一个简单的xml,类型可以是 :ntext/varcahr/nvarchar
内容如下 " <root> <detail> <head_guid> </head_guid> <wp_code> </wp_code>
<edit_user> </edit_user> <del_flag> </del_flag> </detail> </root> "


create procedure [dbo].[P_UpdateWPIssueDetail_ForXml]

@XmlData VARCHAR(8000)

as

declare @XmlData_ID int
declare @head_guid varchar(50)
declare @wp_code varchar(50)
declare @del_flag varchar(50)
declare @edit_user varchar(50)


EXEC sp_xml_preparedocument @XmlData_ID OUTPUT, @xmldata, ' '

create table tmp_wp_detail(head_guid varchar(50) ,wp_code varchar(50) ,edit_user varchar(50),del_flag varchar(50))
select * into #wp_detail from tmp_wp_detail where 1 <> 1
drop table tmp_wp_detail

insert into #wp_detail
SELECT head_guid, wp_code,edit_user,del_flag FROM
OPENXML(@xmldata_id, '//detail ', 2) WITH (head_guid varchar(50), wp_code varchar(50),edit_user varchar(50),del_flag varchar(50))

EXEC sp_xml_removedocument @XmlData_ID
go
------解决方案--------------------------------------------------------
没关系的,数据库字段是int型,你也可以用Varchar来用。
你需要把你的 204,205 ,改为 204 ', '205 试试看~~~~
  相关解决方案