我想創建一個函數,將採取在表名稱,採取該表名稱並將列入名稱,因爲這是表的設計。該函數還包含表中的代碼PK,並使用它構造一個Dynamic語句,該語句將選擇該值並將其返回給變量。動態SQL選擇到一個變量
我得到這樣的錯誤:
SP2-0552:綁定變量 「LOC_CODE_TAB」 未聲明。
所以我的主要問題是何時使用派生值作爲綁定變量,何時不使用。
這裏是我嘗試例如:
DECLARE
loc_stmt VARCHAR2(200);
loc_return VARCHAR2(30) := null;
loc_code_tab VARCHAR2(30);
P_TABLE_NAME VARCHAR2(100) := 'BILLG_FRQNCY_TYPE';
P_CODE NUMBER := 1;
BEGIN
loc_code_tab := SUBSTR(P_TABLE_NAME,1,LENGTH(P_TABLE_NAME)-3);
loc_stmt :=
'SELECT ' || :loc_code_tab || '_DESC' ||
' INTO ' || loc_return ||
' FROM ' || :loc_code_tab ||
' WHERE ' || P_TABLE_NAME || ' = ' || :P_CODE;
EXECUTE IMMEDIATE loc_stmt
INTO loc_return
USING IN loc_code_tab, IN loc_code_tab, IN P_CODE;
DBMS_OUTPUT.PUT_LINE(loc_return);
END;
/
非常感謝,那個竅門 – programmerNOOB
確定你的語法看起來更好,所以我會upvote你。我已經採取了原來的一個看起來有點混亂 – Kacper
p_code注意你可以(實際上你應該)使用佔位符和綁定變量。 –