我想创建一个函数,将采取在表名称,采取该表名称并将列入名称,因为这是表的设计。该函数还包含表中的代码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注意你可以(实际上你应该)使用占位符和绑定变量。 –