0

Oracle SQL Developer Scratch Editor ツールを使用しています。小さなエラーがいくつかありますが、修正方法がわかりません。

--SQLDEV:Following Line Not Recognized
WHILE @I <= @PAT_CNT

--SQLDEV:Following Line Not Recognized
BEGIN

SELECT PAT_NUMBER ,
       PATIENT_ID ,
       MRN ,
       LAST_NAME ,
       FIRST_NAME ,
       UNIT_CODE ,
       NURSING_UNIT ,
       SDT ,
       EDT ,
       SHIFT_CODE ,
       START_TIME ,
       END_TIME 

  INTO v_PAT_NUMBER,
       v_PATIENT_ID,
       v_MRN,
       v_LAST_NAME,
       v_FIRST_NAME,
       v_UNIT_CODE,
       v_NURSING_UNIT,
       v_SDT,
       v_EDT,
       v_SHIFT_CODE,
       v_START_TIME,
       v_END_TIME
  FROM tt_v_PATS 
 WHERE PKEY = v_I;


BEGIN
   v_L_CUR_DATE := TRUNC_DATE(v_P_START_DATE) ;
END;

--SQLDEV:Following Line Not Recognized
WHILE @L_CUR_DATE <= OPTC.TRUNC_DATE(@P_END_DATE)

--SQLDEV:Following Line Not Recognized
BEGIN
4

1 に答える 1

1

あなたがここで何をしようとしているのか正確にはわかりません...

PL/SQL では、変数はDECLARE無名 PL/SQL ブロックのIS/ ASセクションまたは名前付き PL/SQL ブロック (ストアド プロシージャまたはストアド ファンクション) のセクションで宣言されます。PL/SQL では、 aBEGINを an とペアにする必要があります--コード内に、関連付けられていないEND一連のステートメントが表示されます。また、PL/SQL では、変数を参照するために使用しません。BEGINEND@

このようなものは構文的に有効ですが、それが意図したとおりに機能するかどうかは明らかではありません。

DECLARE
  v_PAT_NUMBER     tt_v_PATS.PAT_NUMBER%type;
  v_PATIENT_ID     tt_v_PATS.PATIENT_ID%type;
  v_MRN            tt_v_PATS.MRN%type;
  v_LAST_NAME      tt_v_PATS.LAST_NAME%type;
  v_FIRST_NAME     tt_v_PATS.FIRST_NAME%type;
  v_UNIT_CODE      tt_v_PATS.UNIT_CODE%type;
  v_NURSING_UNIT   tt_v_PATS.NURSING_UNIT%type;
  v_SDT            tt_v_PATS.SDT%type;
  v_EDT            tt_v_PATS.EDT%type;
  v_SHIFT_CODE     tt_v_PATS.SHIFT_CODE%type;
  v_START_TIME     tt_v_PATS.START_TIME%type;
  v_END_TIME       tt_v_PATS.END_TIME%type;
  v_pat_cnt        integer := 100;
BEGIN                 
  FOR i IN 1 .. v_pat_cnt
  LOOP
    SELECT PAT_NUMBER ,   
           PATIENT_ID ,   
           MRN ,          
           LAST_NAME ,    
           FIRST_NAME ,   
           UNIT_CODE ,    
           NURSING_UNIT , 
           SDT ,          
           EDT ,          
           SHIFT_CODE ,   
           START_TIME ,   
           END_TIME                              
      INTO v_PAT_NUMBER,  
           v_PATIENT_ID,  
           v_MRN,         
           v_LAST_NAME,   
           v_FIRST_NAME,  
           v_UNIT_CODE,   
           v_NURSING_UNIT,
           v_SDT,         
           v_EDT,         
           v_SHIFT_CODE,  
           v_START_TIME,  
           v_END_TIME     
      FROM tt_v_PATS      
     WHERE PKEY = i;  
     <<do something with the local variables>>
  END LOOP;
END;  

もちろん、レコード型を使用してコードを少し簡素化することもできます

DECLARE
  v_PATS_REC       tt_v_PATS%rowype;
  v_pat_cnt        integer := 100;
BEGIN                 
  FOR i IN 1 .. v_pat_cnt
  LOOP
    SELECT *                             
      INTO v_PATS_REC   
      FROM tt_v_PATS      
     WHERE PKEY = i;  
     <<do something with the record>>
  END LOOP;
END;  
于 2012-06-05T14:25:59.490 に答える