如果它是varchar2,如何执行动态sql

时间:2018-02-22 11:15:10

标签: sql oracle plsql execution dynamicquery

我有PL / SQL函数,它动态创建select语句,并将此语句作为varchar.Because返回,因为我需要此语句动态工作(每次返回不同的列数/名称)。例如,它可以返回此select

export class LoginPage implements AfterViewInit {

ngAfterViewInit(){
   setTimeout( ()=>{
   console.log('works')
   }, 5000)
 }

}

我有另一个函数必须使用这个select语句结果。 但是第二个select语句返回该字符串并且不能执行这个select语句。

如何使第一个函数返回结果为sql?

2 个答案:

答案 0 :(得分:1)

如果调用者知道结果的结构:

CREATE OR REPLACE PROCEDURE execute_query(query IN VARCHAR2)
    TYPE cur_typ IS REF CURSOR;
    c cur_typ;
    ID NUMBER;
    Name VARCHAR2(20);
    Currency VARCHAR2(20);
    Note VARCHAR2(200);
BEGIN
    OPEN c FOR query;
    LOOP
        FETCH c INTO ID, Name, Currency, Note;
        EXIT WHEN c%NOTFOUND;
        ....
    END LOOP;

    CLOSE c;
END;
/

答案 1 :(得分:0)

使用 EXECUTE IMMEDIATE Statement

如文件中所述: https://docs.oracle.com/cd/B13789_01/appdev.101/b10807/13_elems017.htm