Oracle 如何将查询参数传递给过程?
我需要将单元格、A_ID、TBL作为参数添加到上述过程中。我不确定类型和语法 澄清: 对于不同的表、不同的列,过程将被多次调用。主体是相同的,只是我提到的那些参数不同。您可以滥用动态SQL将表名作为参数传递给过程 让我们执行该过程并查看Oracle 如何将查询参数传递给过程?,oracle,plsql,oracle-apex,Oracle,Plsql,Oracle Apex,我需要将单元格、A_ID、TBL作为参数添加到上述过程中。我不确定类型和语法 澄清: 对于不同的表、不同的列,过程将被多次调用。主体是相同的,只是我提到的那些参数不同。您可以滥用动态SQL将表名作为参数传递给过程 让我们执行该过程并查看 SQL> CREATE OR REPLACE 2 PROCEDURE p( 3 table_name IN VARCHAR2) 4 AS 5 TYPE ref_typ 6 IS 7 REF 8 CU
SQL> CREATE OR REPLACE
2 PROCEDURE p(
3 table_name IN VARCHAR2)
4 AS
5 TYPE ref_typ
6 IS
7 REF
8 CURSOR;
9 var_ref ref_typ;
10 emp_no NUMBER ;
11 BEGIN
12 OPEN var_ref FOR 'SELECT EMPNO FROM '||table_name;
13 LOOP
14 FETCH var_ref INTO emp_no ;
15 EXIT
16 WHEN var_ref%NOTFOUND;
17 DBMS_OUTPUT.PUT_LINE('empno --> '||emp_no);
18 END LOOP;
19 CLOSE var_ref;
20 END;
21 /
Procedure created.
添加单元格、a_id、tbl作为参数是什么意思?请使用问题下的链接进一步详细说明此问题。重复使用同一代码进行多次呼叫。我已经更新了我的问题。如果您需要在执行时决定表名和联接条件,您需要使用动态SQL,您可以使用DBMS|U SQL或EXECUTE|U IMMEDIATE以及类型。我如何修改上面的内容,查询“SELECT*FROM”| Table|U name,然后使用点访问每一列,例如rec.EMPNO?要获取的变量rec应该是什么类型?或者至少如何使用上述方法查询和获取多个列?您需要使用集合类型。搜索%ROWTYPE.ok,刚刚创建了行单元格%ROWTYPE,现在可以访问列了。感谢您的反馈。如果答案对你有帮助,那么请在答案上做标记。这将有助于其他寻找类似问题的人。
SQL> CREATE OR REPLACE
2 PROCEDURE p(
3 table_name IN VARCHAR2)
4 AS
5 TYPE ref_typ
6 IS
7 REF
8 CURSOR;
9 var_ref ref_typ;
10 emp_no NUMBER ;
11 BEGIN
12 OPEN var_ref FOR 'SELECT EMPNO FROM '||table_name;
13 LOOP
14 FETCH var_ref INTO emp_no ;
15 EXIT
16 WHEN var_ref%NOTFOUND;
17 DBMS_OUTPUT.PUT_LINE('empno --> '||emp_no);
18 END LOOP;
19 CLOSE var_ref;
20 END;
21 /
Procedure created.
SQL> set serveroutput on
SQL> BEGIN
2 p('emp');
3 END;
4 /
empno --> 7369
empno --> 7499
empno --> 7521
empno --> 7566
empno --> 7654
empno --> 7698
empno --> 7782
empno --> 7788
empno --> 7839
empno --> 7844
empno --> 7876
empno --> 7900
empno --> 7902
empno --> 7934
PL/SQL procedure successfully completed.
SQL>