在DB2中是否可以使用绑定变量获取解释计划?

在DB2中是否可以使用绑定变量获取解释计划?,db2,sql-execution-plan,Db2,Sql Execution Plan,对于Oracle,语法是: explain plan for select * from users WHERE user_name = :user_name AND user_dob = :user_dob 在DB2中也可以这样做吗?下面的陈述似乎不起作用 explain plan with snapshot for select * from users WHERE user_name = :user_name AND user_dob = :user_dob 谢谢。答案可能取决于您的D

对于Oracle,语法是:

explain plan for
select * from users WHERE user_name = :user_name AND user_dob = :user_dob
在DB2中也可以这样做吗?下面的陈述似乎不起作用

explain plan with snapshot for
select * from users WHERE user_name = :user_name AND user_dob = :user_dob

谢谢。

答案可能取决于您的DB2版本和平台,您出于某种原因选择不与我们共享。这在DB2forLUW(v10.1,但我相信它在v9.7及更高版本中也能正常工作):


您可能希望尝试用问号替换命名参数标记。

显然,答案在IBM网站上,但不容易理解

FOR可解释sql语句

指定要解释的SQL语句。这句话可以是任何形式的 有效调用、复合SQL(动态)、删除、插入、合并、选择、, 选择INTO、UPDATE、VALUES或VALUES INTO SQL语句。如果 EXPLAIN语句嵌入在程序中 可解释sql语句可以包含对主机变量的引用 (这些变量必须在程序中定义)。同样,如果 EXPLAIN正在动态准备,可解释sql语句 可以包含参数标记


但是它没有告诉您“参数标记”是什么,所以您必须去搜索它。

将语句更改为“select*from users WHERE user_name=?和user_dob=?”起作用的用户。谢谢。您的DB2服务器运行在什么操作系统上?
$ db2 "explain plan with snapshot for select * from syscat.schemata where schemaname = :blah"
DB20000I  The SQL command completed successfully.