0

对于 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

谢谢你。

4

2 回答 2

1

答案可能取决于您出于某种原因选择不与我们共享的 DB2 版本和平台。这适用于 DB2 for LUW(v10.1,但我确信它适用于 v9.7 及更高版本):

$ db2 "explain plan with snapshot for select * from syscat.schemata where schemaname = :blah"
DB20000I  The SQL command completed successfully.

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

于 2013-10-21T14:41:48.863 回答
0

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

http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=%2Fcom.ibm.db2.udb.admin.doc%2Fdoc%2Fr0000952.htm

FOR 可解释的 sql 语句

指定要解释的 SQL 语句。此语句可以是任何有效的 CALL、复合 SQL(动态)、DELETE、INSERT、MERGE、SELECT、SELECT INTO、UPDATE、VALUES 或 VALUES INTO SQL 语句。如果 EXPLAIN 语句嵌入在程序中,explainable-sql-statement 可以包含对宿主变量的引用(这些变量必须在程序中定义)。同样,如果 EXPLAIN 是动态准备的,则可解释的 SQL 语句可以包含参数标记

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

于 2013-10-23T07:54:36.500 回答