Oracle SQL Ошибка PLS-00103 INSERT NEW ROW - PullRequest
0 голосов
/ 13 июля 2020

Это будет долгий вопрос, прошу прощения, если вопрос не так интересен. Я только новичок с Oracle SQL. Я как бы новичок в Oracle, и сейчас я пытаюсь создать сценарий для добавления новой строки в таблицу T_USER.

Это мой код:

SET SERVEROUTPUT ON; --- IT WAS OFF BY DEFAULT

--- declare the variable

DECLARE

TUSERID NUMBER(38,0);
TORGID  NUMBER(38,0) := 'Write-the-Org-ID-Here';
TROLE   NUMBER(38,0) := 'Write-the-role-Here';
TQDL    NUMBER(38,0) := null;
TFIRSTNAME  VARCHAR2(255 BYTE)  := 'Write-the-First-Name-Here';
TLASTNAME   VARCHAR2(255 BYTE) := 'Write-the-Last-Name-Here';
TEMAIL  VARCHAR2(255 BYTE) := 'Write-the-email-Here';
TEMAILSUBSCRIPTION  NUMBER(1,0) := null;
TDIVISION   VARCHAR2(255 BYTE) := 'Write-the-division-Here';
TQNUMBER    VARCHAR2(255 BYTE) := 'Write-the-QNumber-for-the-user-Here';
TACTIVE NUMBER(1,0) := 1;
TCREATOR    NUMBER(38,0);
TCREATED    TIMESTAMP(6);
TEDITOR NUMBER(38,0);
TEDITED TIMESTAMP(6);
TISDELETED  NUMBER(1,0)  := 0;
TLOGIN  VARCHAR2(255 BYTE) := 'Write-the-QNumber-for-the-user-Here';
TSETTINGS   CLOB := null;
TDEFAULTINBOX   NUMBER(38,0) := null;
TACCESSTOPST    NUMBER(38,0) := null;
TTIME_ZONE  VARCHAR2(100 CHAR) := 'Write-the-Time-Zone-Here';
TLIMITEDACCESS  NUMBER(1,0) := null;
TVALID_UNTIL    TIMESTAMP(6);
TCOMMENTS   VARCHAR2(255 CHAR) := null; --- I think you can insert the number of the Incident here
TAFTERSALESACCESS   NUMBER(38,0) := null;
TSOURCE VARCHAR2(5 BYTE) := 'QCAT';

---- BEGIN

BEGIN

SELECT COUNT(USERID) + 1
INTO TUSERID
FROM T_USER;
--------
SELECT USERID
INTO TCREATOR
FROM T_USER
WHERE LOGIN = 'Your-Q-number';
-------
SELECT  systimestamp
INTO TCREATED
FROM dual;
---
SELECT USERID
INTO TEDITOR
FROM T_USER
WHERE LOGIN = 'Your-Q-number';
 ----
SELECT systimestamp
INTO TEDITED
FROM dual;
-----
SELECT TO_CHAR
((select add_months((SELECT systimestamp FROM dual),1 *12) from dual), 'MM-DD-YYYY HH24:MI:SS') ----"TODAY" ?????
INTO TVALID_UNTIL
FROM DUAL; ---- ADD one year to the currrent date

END 

----INSERT INTO

INSERT INTO T_USER (USERID,
ORGID,
ROLE,
QDL,
FIRSTNAME,
LASTNAME,
EMAIL,
EMAILSUBSCRIPTION,
DIVISION,
QNUMBER,
ACTIVE,
CREATOR,
CREATED,
EDITOR,
EDITED,
ISDELETED,
LOGIN,
SETTINGS,
DEFAULTINBOX,
ACCESSTOPST,
TIME_ZONE,
LIMITEDACCESS,
VALID_UNTIL,
COMMENTS,
AFTERSALESACCESS,
SOURCE) 
VALUES(TUSERID,
TORGID,
TROLE,
TQDL,
TFIRSTNAME,
TLASTNAME,
TEMAIL,
TEMAILSUBSCRIPTION,
TDIVISION,
TQNUMBER,
TACTIVE,
TCREATOR,
TCREATED,
TEDITOR,
TEDITED,
TISDELETED,
TLOGIN,
TSETTINGS,
TDEFAULTINBOX,
TACCESSTOPST,
TTIME_ZONE,
TLIMITEDACCESS,
TVALID_UNTIL,
TCOMMENTS,
TAFTERSALESACCESS,
TSOURCE);

Я получаю следующая ошибка (и):

Error starting at line : 5 in command -
DECLARE

TUSERID NUMBER(38,0);
TORGID  NUMBER(38,0) := 'Write-the-Org-ID-Here';
TROLE   NUMBER(38,0) := 'Write-the-role-Here';
TQDL    NUMBER(38,0) := null;
TFIRSTNAME  VARCHAR2(255 BYTE)  := 'Write-the-First-Name-Here';
TLASTNAME   VARCHAR2(255 BYTE) := 'Write-the-Last-Name-Here';
TEMAIL  VARCHAR2(255 BYTE) := 'Write-the-email-Here';
TEMAILSUBSCRIPTION  NUMBER(1,0) := null;
TDIVISION   VARCHAR2(255 BYTE) := 'Write-the-division-Here';
TQNUMBER    VARCHAR2(255 BYTE) := 'Write-the-QNumber-for-the-user-Here';
TACTIVE NUMBER(1,0) := 1;
TCREATOR    NUMBER(38,0);
TCREATED    TIMESTAMP(6);
TEDITOR NUMBER(38,0);
TEDITED TIMESTAMP(6);
TISDELETED  NUMBER(1,0)  := 0;
TLOGIN  VARCHAR2(255 BYTE) := 'Write-the-QNumber-for-the-user-Here';
TSETTINGS   CLOB := null;
TDEFAULTINBOX   NUMBER(38,0) := null;
TACCESSTOPST    NUMBER(38,0) := null;
TTIME_ZONE  VARCHAR2(100 CHAR) := 'Write-the-Time-Zone-Here';
TLIMITEDACCESS  NUMBER(1,0) := null;
TVALID_UNTIL    TIMESTAMP(6);
TCOMMENTS   VARCHAR2(255 CHAR) := null; --- I think you can insert the number of the Incident here
TAFTERSALESACCESS   NUMBER(38,0) := null;
TSOURCE VARCHAR2(5 BYTE) := 'QCAT';

---- BEGIN

BEGIN

SELECT COUNT(USERID) + 1
INTO TUSERID
FROM T_USER;
--------
SELECT USERID
INTO TCREATOR
FROM T_USER
WHERE LOGIN = 'Your-Q-number';
-------
SELECT  systimestamp
INTO TCREATED
FROM dual;
---
SELECT USERID
INTO TEDITOR
FROM T_USER
WHERE LOGIN = 'Your-Q-number';
 ----
SELECT systimestamp
INTO TEDITED
FROM dual;
-----
SELECT TO_CHAR
((select add_months((SELECT systimestamp FROM dual),1 *12) from dual), 'MM-DD-YYYY HH24:MI:SS') ----"TODAY" ?????
INTO TVALID_UNTIL
FROM DUAL; ---- ADD one year to the currrent date

END 

----INSERT INTO

INSERT INTO T_USER (USERID,
ORGID,
ROLE,
QDL,
FIRSTNAME,
LASTNAME,
EMAIL,
EMAILSUBSCRIPTION,
DIVISION,
QNUMBER,
ACTIVE,
CREATOR,
CREATED,
EDITOR,
EDITED,
ISDELETED,
LOGIN,
SETTINGS,
DEFAULTINBOX,
ACCESSTOPST,
TIME_ZONE,
LIMITEDACCESS,
VALID_UNTIL,
COMMENTS,
AFTERSALESACCESS,
SOURCE) 
VALUES(TUSERID,
TORGID,
TROLE,
TQDL,
TFIRSTNAME,
TLASTNAME,
TEMAIL,
TEMAILSUBSCRIPTION,
TDIVISION,
TQNUMBER,
TACTIVE,
TCREATOR,
TCREATED,
TEDITOR,
TEDITED,
TISDELETED,
TLOGIN,
TSETTINGS,
TDEFAULTINBOX,
TACCESSTOPST,
TTIME_ZONE,
TLIMITEDACCESS,
TVALID_UNTIL,
TCOMMENTS,
TAFTERSALESACCESS,
TSOURCE);
Error report -
ORA-06550: line 65, column 1:
PLS-00103: Encountered the symbol "INSERT" when expecting one of the following:

   ; <an identifier> <a double-quoted delimited-identifier>
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

Заранее благодарим вас за помощь. Я трачу часы и это окончательный результат, который я смог написать, я не могу понять, что я делаю не так.

Ответы [ 2 ]

0 голосов
/ 13 июля 2020

Ваш КОНЕЦ находится не в том месте. Блок в PL / SQL начинается с begin и заканчивается END. У вас может быть больше единиц, но в вашем случае, поскольку у вас есть только один BEGIN, поэтому последняя команда должна быть END;

declare 
-- declarantion of variables and cursors
begin
-- processing
end;

Итак, в вашем коде

DECLARE

TUSERID NUMBER(38,0);
TORGID  NUMBER(38,0) := 'Write-the-Org-ID-Here';
TROLE   NUMBER(38,0) := 'Write-the-role-Here';
TQDL    NUMBER(38,0) := null;
TFIRSTNAME  VARCHAR2(255 BYTE)  := 'Write-the-First-Name-Here';
TLASTNAME   VARCHAR2(255 BYTE) := 'Write-the-Last-Name-Here';
TEMAIL  VARCHAR2(255 BYTE) := 'Write-the-email-Here';
TEMAILSUBSCRIPTION  NUMBER(1,0) := null;
TDIVISION   VARCHAR2(255 BYTE) := 'Write-the-division-Here';
TQNUMBER    VARCHAR2(255 BYTE) := 'Write-the-QNumber-for-the-user-Here';
TACTIVE NUMBER(1,0) := 1;
TCREATOR    NUMBER(38,0);
TCREATED    TIMESTAMP(6);
TEDITOR NUMBER(38,0);
TEDITED TIMESTAMP(6);
TISDELETED  NUMBER(1,0)  := 0;
TLOGIN  VARCHAR2(255 BYTE) := 'Write-the-QNumber-for-the-user-Here';
TSETTINGS   CLOB := null;
TDEFAULTINBOX   NUMBER(38,0) := null;
TACCESSTOPST    NUMBER(38,0) := null;
TTIME_ZONE  VARCHAR2(100 CHAR) := 'Write-the-Time-Zone-Here';
TLIMITEDACCESS  NUMBER(1,0) := null;
TVALID_UNTIL    TIMESTAMP(6);
TCOMMENTS   VARCHAR2(255 CHAR) := null; --- I think you can insert the number of the Incident here
TAFTERSALESACCESS   NUMBER(38,0) := null;
TSOURCE VARCHAR2(5 BYTE) := 'QCAT';

---- BEGIN

BEGIN

SELECT COUNT(USERID) + 1
INTO TUSERID
FROM T_USER;
--------
SELECT USERID
INTO TCREATOR
FROM T_USER
WHERE LOGIN = 'Your-Q-number';
-------
SELECT  systimestamp
INTO TCREATED
FROM dual;
---
SELECT USERID
INTO TEDITOR
FROM T_USER
WHERE LOGIN = 'Your-Q-number';
 ----
SELECT systimestamp
INTO TEDITED
FROM dual;
-----
SELECT TO_CHAR
((select add_months((SELECT systimestamp FROM dual),1 *12) from dual), 'MM-DD-YYYY HH24:MI:SS') ----"TODAY" ?????
INTO TVALID_UNTIL
FROM DUAL; ---- ADD one year to the currrent date

    ----INSERT INTO

INSERT INTO T_USER (USERID,
ORGID,
ROLE,
QDL,
FIRSTNAME,
LASTNAME,
EMAIL,
EMAILSUBSCRIPTION,
DIVISION,
QNUMBER,
ACTIVE,
CREATOR,
CREATED,
EDITOR,
EDITED,
ISDELETED,
LOGIN,
SETTINGS,
DEFAULTINBOX,
ACCESSTOPST,
TIME_ZONE,
LIMITEDACCESS,
VALID_UNTIL,
COMMENTS,
AFTERSALESACCESS,
SOURCE) 
VALUES(TUSERID,
TORGID,
TROLE,
TQDL,
TFIRSTNAME,
TLASTNAME,
TEMAIL,
TEMAILSUBSCRIPTION,
TDIVISION,
TQNUMBER,
TACTIVE,
TCREATOR,
TCREATED,
TEDITOR,
TEDITED,
TISDELETED,
TLOGIN,
TSETTINGS,
TDEFAULTINBOX,
TACCESSTOPST,
TTIME_ZONE,
TLIMITEDACCESS,
TVALID_UNTIL,
TCOMMENTS,
TAFTERSALESACCESS,
TSOURCE);

COMMIT;

END;
0 голосов
/ 13 июля 2020

Попробуйте поставить точку с запятой сразу после END.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...