2013-10-21 75 views
0

隨着甲骨文,語法是:是否有可能在DB2中使用綁定變量獲得解釋計劃?

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 

謝謝。

+0

您的DB2服務器上運行什麼操作系統? – WarrenT

回答

1

答案可能取決於您選擇不出於某種原因與我們共享的DB2版本和平臺。這適用於DB2 for LUW的罰款(10.1,但我敢肯定它會與V9.7和後續工作):

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

你可能想嘗試用問號代替命名參數標記。

+0

將語句更改爲「select * from user WHERE user_name =?AND user_dob =?」工作。謝謝。 – Andy

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語句 可以包含參數標記

但它沒有告訴你「參數標記」是什麼,所以你必須去搜索它。

相關問題