Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不允许Oracle PL/SQL本地集合类型错误_Oracle_Plsql - Fatal编程技术网

不允许Oracle PL/SQL本地集合类型错误

不允许Oracle PL/SQL本地集合类型错误,oracle,plsql,Oracle,Plsql,问候!有没有一种方法可以在Oracle SQL上执行下面代码中给出的逻辑?我得到错误PLS-00642:SQL语句中不允许使用本地集合类型;对于变量var1和var2 CREATE OR REPLACE PROCEDURE TEST IS CURSOR c1 IS SELECT * FROM Table1; TYPE num_arr_type IS TABLE OF NUMBER(5); i_rec Table1%ROWTYPE; var1 num_arr_typ

问候!有没有一种方法可以在Oracle SQL上执行下面代码中给出的逻辑?我得到错误PLS-00642:SQL语句中不允许使用本地集合类型;对于变量var1和var2

CREATE OR REPLACE PROCEDURE TEST IS
    CURSOR c1 IS SELECT * FROM Table1;
    TYPE num_arr_type IS TABLE OF NUMBER(5);
    i_rec Table1%ROWTYPE;
    var1 num_arr_type;
BEGIN
    var1:= SELECT num FROM Table3;
    OPEN c1;
      LOOP
        FETCH c1 INTO i_rec;
        EXIT WHEN c1%NOTFOUND;

          SELECT a.num                
            FROM Table2 a
           WHERE a.cod_agt = var1;

      END LOOP;    
    CLOSE c1;

END TEST;
在我的代码中,我希望将SELECT结果存储到一个变量中,并在另一个SELECT语句的WHERE子句中使用该变量。可能吗

我想将SELECT结果存储到变量中,并使用 另一个select语句的WHERE子句中的变量。是吗 可能的

我不确定你想要达到什么目标,但看看你上面的陈述,我举了一个例子:

CREATE OR REPLACE PROCEDURE TEST IS
    CURSOR c1 IS 
    SELECT * FROM Table1;

    TYPE num_arr_type IS TABLE OF NUMBER(5);

    var1  num_arr_type;

    i_rec Table1%ROWTYPE;
    v_num number;

BEGIN
     --- This is how you store value to a collection
    SELECT num
      bulk collect into  var1
    FROM Table3;

     --- Loop to get individual records from your collection
   For i in 1..var1.count
    loop    
       SELECT a.num  
         into  v_num             
            FROM Table2 a
           --This is how you pass the value stored in your collection one by one in loop.
           WHERE a.cod_agt = var1(i);   

       dbms_output.put_line(v_num);  
    end loop;             

END TEST;

你这里有些问题。如果你能发布一些示例数据、所需结果并描述你想要实现的逻辑,人们会更容易帮助你。编辑的可能重复比原始文章更令人困惑。这该怎么办?这个代码有什么问题?这是否给出了您发布的错误?抱歉,我重新编辑了代码。在我的代码中,我希望将SELECT结果存储到一个变量中,并在另一个SELECT语句的WHERE子句中使用该变量。这可能吗?听起来是SQL中(子查询)构造中的一行