sql解析器(更改解析方法)

时间:2010-10-15 10:43:57

标签: sql oracle

我有一个选择:

select * from table1 where col1=10;

和另一个选择:

select * from table1 where col1=11;

Sql解析器将它们解析为不同的sqls .. 我想让SQL PARSER解析语句一次,只需更改where子句中的参数。我能这样做吗?有什么想法吗?请与我分享..非常感谢。

P.S: 我在选择:

select * from v$sql
where parsing_user_id=55 (my user id)

并且当我运行第一个查询时看到插入了新行,并且当我运行第二个查询时插入了另一行。如果我再次运行第一个或第二个查询,则现在插入新行(意味着sql解析器不解析再一次)

1 个答案:

答案 0 :(得分:7)

您需要以某种形式使用绑定变量。例如,如果您在SQL * Plus中执行此操作,则可以执行以下操作:

var myval number;

exec :myval := 10;
select * from table1 where col1 = :myval;

exec :myval := 11;
select * from table1 where col1 = :myval;

如果您从其他地方打电话,机制略有不同,那么您可能需要更具体一些。