首页 > 解决方案 > 有编译器问题以及游标问题的声明?

问题描述

所以我正在为我的项目创建一个程序。它说游标的声明不完整,导致语句被忽略。由于我的 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;

这也是我的代码的屏幕截图: 错误图像

标签: sqloracledatabase-cursor

解决方案


查看您的屏幕截图,您的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<>在这里摆弄


推荐阅读