gpt4 book ai didi

java - PLS-00357 : Table, 在此上下文中不允许查看或序列引用 'CHEM_PHYSICAL_PROPERTIES'

转载 作者:行者123 更新时间:2023-12-02 09:57:25 25 4
gpt4 key购买 nike

我正在尝试执行动态查询 SQL“EXECUTE IMMEDIATE”,但面临“PLS-00357:在此上下文中不允许表、 View 或序列引用 CHEM_PHYSICAL_PROPERTIES”的问题,其中“CHEM_PHYSICAL_PROPERTIES”是我的动态表名称。请就此提出解决方案。

最初尝试使用“SYS_REFCURSOR”执行相同的操作,但无法对类型为 %rowtype 的动态表名执行此操作。即

代码1:

 CREATE OR REPLACE PROCEDURE updateTargetVal(rowNumber VARCHAR2,p_table_name VARCHAR2, p_object_Id VARCHAR2)  
IS
v_my_object_record chem_physical_properties%ROWTYPE;
cur_records SYS_REFCURSOR;
BEGIN
--This procedure modified afterwards without SYS_REFCURSOR
Pr_get_result(p_table_name,p_object_Id,cur_records);
IF (cur_records IS NOT NULL)
THEN
LOOP
FETCH cur_records INTO v_my_object_record;
EXIT WHEN cur_records%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('----'||v_my_object_record.min_value);
END LOOP;
CLOSE cur_records;
END IF;

END updateTargetVal;

代码2:然后为了解决动态表名“%rowtype”问题,继续执行以下解决方案,但出现上述问题。所以请提出前进的方向。

CREATE OR replace PROCEDURE Pr_get_result (p_table_name VARCHAR2,p_object_Id VARCHAR2)
IS
p_prop_code VARCHAR2(50) := 'pH';

BEGIN
EXECUTE IMMEDIATE
'DECLARE ' ||
' TYPE ObjCurTyp IS REF CURSOR; ' ||
' v_obj_cursor ObjCurTyp; ' ||
' v_stmt_str VARCHAR2(1000); ' ||
' v_obj_record ' || p_table_name || '%rowtype; '||
'BEGIN ' ||
' v_stmt_str := ''SELECT * FROM (SELECT * FROM :p_table_name where CREATED_DATE<= (SELECT CREATED_DATE FROM :p_table_name WHERE object_id='||p_object_Id||' AND PROPERTY_CODE='||p_prop_code||') Order By CREATED_DATE DESC) WHERE ROWNUM <= 5'';' ||
' OPEN v_obj_cursor ' ||
' FOR v_stmt_str USING ' ||
p_table_name || ';' ||
' LOOP ' ||
' FETCH v_obj_cursor INTO v_obj_record; ' ||
' EXIT WHEN v_obj_cursor %NOTFOUND; ' ||
' END LOOP; ' ||
'END;';

EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;

最佳答案

在此上下文中不能使用绑定(bind)变量。
只需删除 USING 子句并且不使用它,而是将表名直接连接到 SQL 字符串,就像:

v_stmt_str := ''SELECT ...... SELECT * FROM ' || p_table_name  || ' WHERE ..... 
......
...... T CREATED_DATE FROM ' || p_table_name || ' WHERE obj .....

关于java - PLS-00357 : Table, 在此上下文中不允许查看或序列引用 'CHEM_PHYSICAL_PROPERTIES',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55890429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com