Что не так с синтаксисом курсора в Oracle для моей базы данных? - PullRequest
0 голосов
/ 14 октября 2019
SQL> CREATE TABLE DOCTOR (
  2  DID INT PRIMARY KEY NOT NULL,
  3  DNAME VARCHAR (15) NOT NULL,
  4  QUALIFICATION VARCHAR(15)
  5  );

Table created.

SQL> CURSOR C_DOCTOR IS SELECT DID,DNAME,QUALIFICATION FROM DOCTOR;
SP2-0734: unknown command beginning "CURSOR C_D..." - rest of line ignored.

Я следовал синтаксису явных курсоров, но все еще получаю эту ошибку. Можете ли вы помочь мне?

Ответы [ 2 ]

0 голосов
/ 14 октября 2019

Курсор не хочет быть один в космосе, ему нужна среда PL / SQL. Это будет блок PL / SQL, его секция DECLARE. Самый простой способ был бы

SQL> CREATE TABLE DOCTOR (
  2      DID INT PRIMARY KEY NOT NULL,
  3      DNAME VARCHAR (15) NOT NULL,
  4      QUALIFICATION VARCHAR(15)
  5      );

Table created.

SQL> declare
  2    CURSOR C_DOCTOR IS SELECT DID,DNAME,QUALIFICATION FROM DOCTOR;   --> this is your line
  3  begin
  4    null;
  5  end;
  6  /

PL/SQL procedure successfully completed.

SQL>

Правда, совершенно бесполезно, но - он компилируется.

0 голосов
/ 14 октября 2019

Курсор должен находиться внутри блока PL / SQL, независимо от того, является ли он анонимным или именованным (например, хранимая процедура, функция или пакет). Вы не можете просто объявить курсор самостоятельно.

...