2011-06-07 38 views
5

我使用的是PL SQL過程中的以下代碼:問題的PL SQL過程中使用「執行即時」

execute immediate 'select count(distinct item_type) into counter_variable 
from items where ' || field_name || ' is not null' 

這裏,

counter_variable在過程 FIELD_NAME的聲明部分聲明是PL SQL過程的IN參數,傳遞的值將是'項目'表中的列名稱

我得到的錯誤是'無效的SQL語句',我無法找出原因。有任何想法嗎?

感謝

回答

10

into子句是PL/SQL和SQL語句無效。 試試這個:

execute immediate 'select count(distinct item_type) 
from items where ' || field_name || ' is not null' into counter_variable 
+3

不要忘記:如果field_name是由用戶提供的,那麼必須檢查SQL注入。 – 2011-06-07 11:50:05