例如,通常允许这样做:
sql.execute("select * from some_table where some_column=@parameter", parameter=5);
但不是这样:
sql.execute("select * from @which_table where some_column=5", which_table="some_table");
未测试所有可能的组合......是这样的:
sql.execute("select @which_column from some_table", which_column="some_column");
或者这个:
sql.execute("select some_column*@multiplier from some_table", multipler=5);
或者....
确定查询的某些部分是否可参数化的一般规则是什么?为什么?
(我意识到对于不同语言的不同数据库引擎和适配器,这可能有不同的答案,但我注意到有一般趋势)
答案 0 :(得分:3)
标识符和关键字不可参数化。这包括:
基本思想是编译查询,编译版本有参数。当缺少任何上述元素时,无法编译查询。
答案 1 :(得分:0)
您可以在查询中对任何内容进行参数化,但不能在运行时参数化。如果您设置如下: @sql ='选择' + @column +'来自' + @table +' '
EXEC(@sql)
您可以参数化所有内容
因此,您需要先创建sql语句,然后再执行它。这就是我通常这样做的方式。
希望有所帮助