PROCEDURE QUERY_CODES
  (
    pi_code_type_list IN  PR_VARCHAR_TABTYP,
    po_result_list    OUT SYS_REFCURSOR,
    po_result_msg     OUT VARCHAR2)
ASBEGIN
  OPEN po_result_list FOR
     SELECT
        NULL CODE_TYPE,
        NULL CODE_NUM,
    FROM dual
    WHERE 1 = 2;  OPEN po_result_list FOR
    SELECT
       CODE_TYPE,
       CODE_NUM, 
    FROM code 
 WHERE
     CODE_TYPE IN (SELECT CODE_TYPE FROM TABLE(pi_code_type_list)) ORDER BY CODE_TYPE,CODE_NUM;     IF SQL%NOTFOUND THEN
     po_result_msg := 'No data found';
     RETURN;
     END IF;
    po_result_msg := 'Success';
END QUERY_CODES;
请问      SELECT
        NULL CODE_TYPE,
        NULL CODE_NUM,
    FROM dual
    WHERE 1 = 2;
 是什么意思?

解决方案 »

  1.   

    请问 SELECT
    NULL CODE_TYPE,
    NULL CODE_NUM,
    FROM dual
    WHERE 1 = 2; 是什么意思?1=2 正常的表示返回空结果,
    一般用户复制表结构。
      

  2.   

    我看好多procedure前都先复制一下表结构,这么做有什么用呢?
      

  3.   

    对光标进行初始化。
    防止返回违背处理的光标。
    同时防止后面的SQL%NOTFOUND判断出现异常。
      

  4.   

    执行"OPEN po_result_list FOR select ..." 2次,
    是否第1次的可删除呢? 反正结果被第2次定义给覆盖了.