【发布时间】:2017-09-29 13:27:37
【问题描述】:
我正在尝试创建一个函数,该函数将采用表名,将该表名转换为列名,因为这是表的设计。该函数还接受一个代码,即表的 PK,并使用它来构造一个动态语句,该语句将选择值到一个变量中返回它。
我收到如下错误:
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;
/
【问题讨论】:
标签: sql oracle plsql dynamic-sql