-2

在 Sybase 数据库上,我可以执行以下操作,它不会执行任何操作,但会引发错误。我想避免使用变量。如果没有变量它不起作用,是否有一种简单的方法可以为我从选择中获得的每一行执行一条语句?

execute ( '
select * from table
where ID = ''123456''
')
4

3 回答 3

0

这称为动态 SQL,应该与exec命令一起使用。

于 2014-02-26T16:20:13.953 回答
0

是的,您可以这样做,正如 Sjoerd 对exec命令所说的那样,但不建议以您显示的形式显示它,原因有两个:

  1. 将字符串与参数连接在一起会使您容易受到SQL 注入的攻击
  2. 通过更改字符串中的参数,您还可以更改 SQL 的哈希,不允许 SQL Server 缓存执行计划。

为了克服这个问题,您可以使用存储过程sp_executesql执行带参数的动态 SQL( T-SQL:如何在动态 SQL 中使用参数? )

于 2014-02-26T16:26:02.253 回答
0

不,您将查询用引号括起来,因此它不是查询而是字符串。如果是查询,则结果可能是表中的一组行,并且不能作为 sql 语句执行

于 2014-02-26T16:15:30.117 回答