写了一个存储过程部分语句如下:
CREATE proc Get_Account_Collect
(
@SIMCard varchar(100)
)
as
begin
declare @SQL1 nvarchar(2000) set @SQL1='select c.simcard ,CName,CustCatlog from Customer c inner join STKCard o on o.CustID=c.ID'
if len(@SIMCard)> 0
BEGIN
set @SQL1 = @SQL1 + ' and c.CustomerNo in ' + @simCard
END
... 因为要向字符串类型的SQL中传参数,所以我传入的参数是 (''001'',''002'') 写在程序中的代码是:
SqlParameter paraSIMCard = new SqlParameter("@SIMCard", SqlDbType.VarChar, 100);
paraSIMCard.Value ="(''001'',''002'')";
cmd.Parameters.Add(paraSIMCard);
他总是报错. 但是我在存储过程中直接把给参数@simCard赋值 ,即:set @simCard='(''001'',''002'')' 或者直接在查询分析器中运行
exec Get_Account_Collect '(''001'',''002'')'
这样都可以运行.就是放在程序中执行的时候不行,好奇怪呀...这到底是为什么呀.哪位大GG帮帮小弟呀..不甚感激呀!
CREATE proc Get_Account_Collect
(
@SIMCard varchar(100)
)
as
begin
declare @SQL1 nvarchar(2000) set @SQL1='select c.simcard ,CName,CustCatlog from Customer c inner join STKCard o on o.CustID=c.ID'
if len(@SIMCard)> 0
BEGIN
set @SQL1 = @SQL1 + ' and c.CustomerNo in ' + @simCard
END
... 因为要向字符串类型的SQL中传参数,所以我传入的参数是 (''001'',''002'') 写在程序中的代码是:
SqlParameter paraSIMCard = new SqlParameter("@SIMCard", SqlDbType.VarChar, 100);
paraSIMCard.Value ="(''001'',''002'')";
cmd.Parameters.Add(paraSIMCard);
他总是报错. 但是我在存储过程中直接把给参数@simCard赋值 ,即:set @simCard='(''001'',''002'')' 或者直接在查询分析器中运行
exec Get_Account_Collect '(''001'',''002'')'
这样都可以运行.就是放在程序中执行的时候不行,好奇怪呀...这到底是为什么呀.哪位大GG帮帮小弟呀..不甚感激呀!
解决方案 »
- 委托和事件的区别?
- 请问在winform中如何绑定datagridview?
- 一个关于List.Sort()方法的疑问——用List.Sort()方法排序结果不正确!!
- SetupFactory,如何在安裝后讓用戶選擇是否進入某個網頁?
- 请问怎么下载这些文档啊?
- 打开。NET项目时出现错误!
- 请问有没有用过Table-valued parameters的大大
- Log4Net 不使用配置文件,如何在程序中动态设定?
- SqlDataReader实例不可以关闭吗???
- 数组空间分配问题:arr=new int[10];arr[1]=5;以后想把空间扩大到20,并保存原空间数据,我用arr=new int[20];arr[1]的数据没了。
- window services installation pack,我在打包的时候,在custom actions-->uninstall 加入一串VBS脚本,使用VBS脚本调用批处理.来卸载服务.
- 网页中怎样控制flash播放。
这语法就不对。你试试用转意字符。
加个转意字符试试!