0

私はこのテーブルを持っています

CREATE TABLE "TB_JOB_LOG"
  (
     "CODIGO"      NUMBER,
     "DESCRIPCION" VARCHAR2(200 BYTE),
     "FECHA"       DATE
  ) 

私はこのストアドプロシージャを持っています

CREATE OR replace PROCEDURE Dummy_test(
    v_mes  IN NUMBER DEFAULT NULL,
    v_anho IN NUMBER DEFAULT NULL,
    cv_1   IN OUT SYS_REFCURSOR)
AS
BEGIN
    OPEN cv_1 FOR
      SELECT codigo,
             fecha
      FROM   tb_job_log
      WHERE  codigo > 5
             AND codigo < 10;
END dummy_test;

この他のストアド プロシージャを使用して、dummy_test の結果を取得したい

CREATE OR replace PROCEDURE Job_fill_ce
IS
  cc SYS_REFCURSOR;
  l  tb_job_log%ROWTYPE;
BEGIN
    Dummy_test(NULL, NULL, cc);

    LOOP
        FETCH cc INTO l;

        exit WHEN cc%NOTFOUND;

        dbms_output.Put_line(l.codigo);
    END LOOP;

    CLOSE cc;
END job_fill_ce;

しかし、実行するとこのエラーが発生しますjob_fill_ce

ORA-06504: PL/SQL: Return types of Result Set variables or query do not match
ORA-06512: en "JOB_FILL_CE", line 7
ORA-06512: en line 2

何か不足していますか?

4

1 に答える 1

1
  SELECT codigo,
         fecha
  FROM   tb_job_log

このカーソルでは、2 つの列を選択しています

その後、3 つの列を含む tb_job_log の行タイプの l を宣言します

   l  tb_job_log%ROWTYPE;

おそらくこれが原因で、このエラーが発生しています

タイプ codigo、fecha および check のレコード タイプを作成してください

于 2013-07-31T20:15:51.023 に答える