收录日期:2018/12/15 03:58:43 时间:2016/05/24 00:19:07 标签:疑难问题
直接像下面这样,没有问题.
exec sp_executesql
N'
INSERT INTO "iSale_JXC".."UserPermission" ("LogonUser","RightID") VALUES (@P1,@P2); 
INSERT INTO "iSale_JXC".."UserPermission" ("LogonUser","RightID") VALUES (@P3,@P4); 
INSERT INTO "iSale_JXC".."UserPermission" ("LogonUser","RightID") VALUES (@P5,@P6)
',N'@P1 varchar(5),@P2 varchar(6),@P3 varchar(5),@P4 varchar(6),@P5 varchar(5),@P6 varchar(6)','UserA','111111','UserB','222222','UserC','333333'

可是我下面这样生成的@cmd1+@cmd2+cmd3和上面sp_executesql后的内容一模一样
,但为什么执行就报错呢??
declare @cmd1 nvarchar(500)
declare @cmd2 nvarchar(500)
declare @cmd3 nvarchar(500)

----cmd1
set @cmd1='
INSERT INTO "iSale_JXC".."UserPermission" ("LogonUser","RightID") VALUES (@P1,@P2); 
INSERT INTO "iSale_JXC".."UserPermission" ("LogonUser","RightID") VALUES (@P3,@P4); 
INSERT INTO "iSale_JXC".."UserPermission" ("LogonUser","RightID") VALUES (@P5,@P6)
'
   set @cmd1='N'+''''+@cmd1+''''+','
 
----cmd2
set @cmd2=
'@P1 varchar(5),@P2 varchar(6),@P3 varchar(5),@P4 varchar(6),@P5 varchar(5),@P6 varchar(6)'

set @cmd2='N'+''''+@cmd2+''''+','

----cmd3
set @cmd3=QuoteName('UserA','''')+','+QuoteName('111111','''')+','+ QuoteName('UserB','''')+','+ 
          QuoteName('222222','''')+','+QuoteName('UserC','''')+','+ QuoteName('333333','''')

exec sp_executesql @cmd1,@cmd2,@cmd3

我的目的是想在Delphi中生成@cmd1,@cmd2,@cmd3中的内容,然后传给sp_executesql
,这样可以动态生成Insert或Update语句.所以先用上面的程序做实验,但为什么
第二段程序就不能运行呢?

我是新人 大家多关照 有个小问题请教 系统托盘???????????? 一个有关不刷新页面从数据库中查询数据的问题。 打印問題﹐急﹐在線等待﹗ 高分请教高手DateTimePicker中日期的转换问题! 请问:php如何获取所有session? 我是新人 大家多关照 有个小问题请教 上次见到一个老板把书面文件用扫描器一扫,就变成了.doc。请问是什么软件呀?好心人40分相送。 如何自定义listbox中每条记录的字体(或背景色)显示颜色 感慨 关于dotnetfx.exe安装问题 如何将\"2003-12-12\"转换成sql-server下的datetime数据类型 下载文件的问题? fso对象的问题。 表空间文件管理 提示错误 需要媒体恢复 怎么办? 请问rank(),over(),row_number() over()函数怎么用? 祝贝贝生日快乐!家庭幸福! 紧急求助 页面跳转,传递参数做为sql查询语句的问题 新手提问!(在线等待)...简单问题!!!! Applet不能显示 命令窗口中出现一个\'>\'符号,无法进行跟踪,请问该怎么办? 古怪的问题!大家帮忙!急急急 C#Builder怎样注册? 求jbuilderx的注册工具,thanks!!!! 誰有好的治療方法,跪求!!!!!!!!!!!!! DataGrid换页可以这么写吗? 这个sql语句怎么在delphi程序中用? 什么叫“超出范围\"??如果 OleDbConnection 超出范围,则不会将其关闭 如何向串口发送出例如:A0 A0C0这样的编码?