【发布时间】:2014-07-08 20:19:12
【问题描述】:
我是 SQL 和特别是动态 sql 执行的初学者。
我正在尝试将存储过程中的一些动态 sql 从使用 EXEC 转换为使用 sp_executesql。
我的问题是我不知道表示多行动态 sql 的确切规则是什么。现有代码的形式为:
Set @cmd = 'WITH vdate AS' + char(13)
+' (SELECT valueID,' + char(13)
+'username)' +char(13)
+'FROM dbo.table1' + char(13)
+'WHERE username = ''' + convert(varchar(11), @username, 106) + ''' AND' + char(13)
Exec (@cmd)
以上只是它的外观的一个sn-p。有更多的行和更复杂的事情发生。
我现在希望能够使用 sp_executesql 方式执行此代码,因为我想将用户名属性更改为接受多个用户名的表。 请你能告诉我这个语法是什么以及我如何在最后一次工作之前制作这条线?
我已经看到代码看起来非常相似,所以我将每行开头的 +' 更改为 N' 并编译了代码,但是当我尝试在我的应用程序中使用查询时它没有执行.
谢谢,杰特诺。
【问题讨论】:
-
您是否为 sp_execute 提供了参数?你可以在这里找到很多信息:msdn.microsoft.com/en-us/library/ms188001.aspx
-
嗨,彼得,发帖前看了一下这个。只是不确定语法。 :)
标签: sql sql-server dynamic-sql