【问题标题】:Having a complier issue as well as declaration of Cursor issue?有编译器问题以及游标问题的声明?
【发布时间】:2021-12-21 18:36:07
【问题描述】:

所以我正在为我的项目创建一个程序。它说游标的声明不完整,导致语句被忽略。由于我的 T_ROW 无效,然后它最终给了我一个编译器日志问题。我对 SQL Oracle 数据库相当陌生,我正在尝试修复它。

这是我的代码:

CREATE OR REPLACE PROCEDURE T(Trip_ID in NUMBER) IS
CURSOR Trips_CURSOR IS SELECT * FROM TRIPS
where TRIPS_ID = T_INFO;
T_ROW Trips_CURSOR%ROWTYPE;
BEGIN
 DBMS_OUTPUT.PUT_LINE('The ID of this trip is ' || T_INFO);
 FOR T_ROW IN Trips_CURSOR LOOP
 DBMS_OUTPUT.PUT_LINE('The Date of the trip is ' || T_ROW.DATE_OF_TRIP);
 DBMS_OUTPUT.PUT_LINE('The Destination town of the Trip ' || T_ROW.Destination_Town);
 DBMS_OUTPUT.PUT_LINE('The Source town is  ' || T_ROW.Source_Town);

END LOOP;
END;

这也是我的代码截图: Image of Error

【问题讨论】:

    标签: sql oracle database-cursor


    【解决方案1】:

    查看您的屏幕截图,您的TRIPS 表包含TRIPS_IDDATE_OF_TRIPDESTINATION_TOWNSOURCE_TOWN 列。但是,您没有 T_INFO 列,并且您的参数未称为 T_INFO,因此您可能给参数提供了错误的名称:

    CREATE OR REPLACE PROCEDURE T(
      T_INFO in TRIPS.TRIPS_ID%TYPE
    )
    IS
      CURSOR Trips_CURSOR IS
       SELECT *
       FROM   TRIPS
       WHERE  TRIPS_ID = T_INFO;
    
      T_ROW Trips_CURSOR%ROWTYPE;
    BEGIN
     DBMS_OUTPUT.PUT_LINE('The ID of this trip is ' || T_INFO);
     FOR T_ROW IN Trips_CURSOR LOOP
       DBMS_OUTPUT.PUT_LINE('The Date of the trip is ' || T_ROW.DATE_OF_TRIP);
       DBMS_OUTPUT.PUT_LINE('The Destination town of the Trip ' || T_ROW.Destination_Town);
       DBMS_OUTPUT.PUT_LINE('The Source town is  ' || T_ROW.Source_Town);
      END LOOP;
    END;
    /
    

    db小提琴here

    【讨论】:

      猜你喜欢
      • 2017-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      • 2020-05-17
      相关资源
      最近更新 更多