在SQL中,我可以使用execute来直接执行查询结果吗?

时间:2014-02-26 16:13:03

标签: sql sybase-iq

在Sybase数据库中,我可以执行以下操作,除了抛出错误之外什么都不做。我想避免使用变量。如果没有变量它不起作用,是否有一种简单的方法来为我从select中获得的每一行执行一个语句?

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

这称为dynamic SQL,可以使用exec命令。

答案 2 :(得分:0)

是的,你可以这样做,正如Sjoerd用exec命令所说的那样,但是出于以下两个主要原因,你出现的形式是不可取的:

  1. 将字符串与参数连接在一起会使您容易受到SQL Injection
  2. 的攻击
  3. 通过更改字符串中的参数,您还可以更改SQL的哈希值,而不允许SQL Server缓存执行计划。
  4. 要解决此问题,您可以使用存储过程T-SQL: How to use parameters in dynamic SQL?

    执行带参数(sp_executesql)的动态SQL