【发布时间】:2012-01-07 17:02:20
【问题描述】:
与t-sql 和sp_executesql 玩得开心(下面的测试输出)。最后一个难题是sp_executesql 的查询和定义参数需要大写N。
感觉是输入参数@cardcodeParm的用法有问题。
如您所见,前两个镜头有效。第三个有效,但没有返回任何内容。
5> execute sp_executesql N'select cardcode, cardname from dbo.ocrd where @dummy = @dummy and cardcode = ''BTG000'' ', N' @dummy int ', @dummy = 1
6> go
cardcode cardname
--------------- ----------------------------------------
BTG000 HUGRO GmbH
(1 rows affected)
1> execute sp_executesql N'select cardcode, cardname from dbo.ocrd where @dummy = @dummy and cardcode = ''BTG000'' ', N' @dummy nvarchar(5) ', @dummy = '1'
2> go
cardcode cardname
--------------- ----------------------------------------
BTG000 HUGRO GmbH
(1 rows affected)
1> execute sp_executesql N'select cardcode, cardname from dbo.ocrd where cardcode = ''@cardcodeParm'' ',
2> N' @cardcodeParm nvarchar(100) ', @cardcodeParm = 'BTG000';
3> go
cardcode cardname
--------------- ----------------------------------------
我正在学习使用带有 sqlcmd 客户端访问的 sql server 2005 的 t-sql。
【问题讨论】:
-
感谢您提供查询、结果和疑似故障位置。
标签: sql-server sql-server-2005 dynamic-sql sqlcmd