我正在编写一些为数据库创建表的PL/SQL代码。
当我尝试跟踪代码时,我一直收到错误PLS-00103。我查看了其他线程,它表明缺少循环的开始,但我看不到可能在哪里。
设置服务器输出
执行THELO;
CREATE OR REPLACE PROCEDURE THELLO AS
WELCOME VARCHAR(50);
BEGIN
CREATE TABLE NEW_PART(
P_PARTKEY NUMBER(12) NOT NULL,
P_NAME VARCHAR(55) NOT NULL,
P_MFGR VARCHAR(25) NOT NULL,
P_BRAND CHAR(10) NOT NULL,
P_TYPE VARCHAR(25) NOT NULL,
P_SIZE NUMBER(12) NOT NULL,
P_CONTAINER CHAR(10) NOT NULL,
P_RETAILPRICE NUMBER(12,2) NOT NULL,
P_COMMENT VARCHAR(23) NOT NULL,
CONSTRAINT NEW_PART_PEKEY PRIMARY KEY (P_PARTKEY),
CONSTRAINT NEW_PART_CHECK1 CHECK(P_PARTKEY >= 0),
CONSTRAINT NEW_PART_CHECK2 CHECK(P_SIZE >= 0),
CONSTRAINT NEW_PART_CHECK3 CHECK(P_RETAILPRICE >= 0) );
CREATE TABLE NEW_SUPPLIER(
S_SUPPKEY NUMBER(12) NOT NULL,
S_NAME CHAR(25) NOT NULL,
S_ADDRESS VARCHAR(40) NOT NULL,
S_NATIONKEY NUMBER(12) NOT NULL,
S_PHONE CHAR(15) NOT NULL,
S_ACCTBAL NUMBER(12,2) NOT NULL,
S_COMMENT VARCHAR(101) NOT NULL,
CONSTRAINT NEW_SUPPLIER_PKEY PRIMARY KEY (S_SUPPKEY),
CONSTRAINT NEW_SUPPLIER_FKEY1 FOREIGN KEY (S_NATIONKEY)
REFERENCES NATION(N_NATIONKEY),
CONSTRAINT NEW_SUPPLIER_CHECK1 CHECK(S_SUPPKEY >= 0) );
CREATE TABLE NEW_PARTSUPP(
PS_PARTKEY NUMBER(12) NOT NULL,
PS_SUPPKEY NUMBER(12) NOT NULL,
PS_AVAILQTY NUMBER(12) NOT NULL,
PS_SUPPLYCOST NUMBER(12,2) NOT NULL,
PS_COMMENT VARCHAR(199) NOT NULL,
CONSTRAINT NEW_PARTSUPP_PKEY PRIMARY KEY (PS_PARTKEY, PS_SUPPKEY),
CONSTRAINT NEW_PARTSUPP_FKEY1 FOREIGN KEY (PS_PARTKEY)
REFERENCES NEW_PART(P_PARTKEY),
CONSTRAINT NEW_PARTSUPP_FKEY2 FOREIGN KEY (PS_SUPPKEY)
REFERENCES NEW_SUPPLIER(S_SUPPKEY),
CONSTRAINT NEW_PARTSUPP_CHECK1 CHECK(PS_PARTKEY >= 0),
CONSTRAINT NEW_PARTSUPP_CHECK2 CHECK(PS_AVAILQTY >= 0),
CONSTRAINT NEW_PARTSUPP_CHECK3 CHECK(PS_SUPPLYCOST >= 0) );
DECLARE
BEGIN
FOR PARTKEY IN (SELECT DISTINCT PS_PARTKEY FROM PARTSUPP)
LOOP
INSERT INTO NEW_PART ( SELECT *
FROM PART
WHERE P_PARTKEY = PARTKEY.PS_PARTKEY );
COMMIT;
END LOOP;
FOR SUPPKEY IN (SELECT DISTINCT PS_SUPPKEY FROM PARTSUPP)
LOOP
INSERT INTO NEW_SUPPLIER ( SELECT *
FROM SUPPLIER
WHERE S_SUPPKEY = SUPPKEY.PS_SUPPKEY );
COMMIT;
END LOOP;
INSERT INTO NEW_PARTSUPP ( SELECT *
FROM PARTSUPP
WHERE PS_PARTKEY IN ( SELECT P_PARTKEY
FROM NEW_PART ) AND
PS_SUPPKEY IN ( SELECT S_SUPPKEY
FROM NEW_SUPPLIER ) );
COMMIT;
END THELLO;
/
show errors
prompt Done.
问题:
PLS-00103:在预期以下情况之一时遇到符号“CREATE”:(begin case declare end exception exit for goto if loop mod null pragma raise return select update while with
正如我所评论的,表创建不能作为过程的一部分,除非它在执行立即数中使用。
在创建过程之前单独创建表。
CREATE TABLE NEW_PART(
P_PARTKEY NUMBER(12) NOT NULL,
P_NAME VARCHAR(55) NOT NULL,
P_MFGR VARCHAR(25) NOT NULL,
P_BRAND CHAR(10) NOT NULL,
P_TYPE VARCHAR(25) NOT NULL,
P_SIZE NUMBER(12) NOT NULL,
P_CONTAINER CHAR(10) NOT NULL,
P_RETAILPRICE NUMBER(12,2) NOT NULL,
P_COMMENT VARCHAR(23) NOT NULL,
CONSTRAINT NEW_PART_PEKEY PRIMARY KEY (P_PARTKEY),
CONSTRAINT NEW_PART_CHECK1 CHECK(P_PARTKEY >= 0),
CONSTRAINT NEW_PART_CHECK2 CHECK(P_SIZE >= 0),
CONSTRAINT NEW_PART_CHECK3 CHECK(P_RETAILPRICE >= 0) );
CREATE TABLE NEW_SUPPLIER(
S_SUPPKEY NUMBER(12) NOT NULL,
S_NAME CHAR(25) NOT NULL,
S_ADDRESS VARCHAR(40) NOT NULL,
S_NATIONKEY NUMBER(12) NOT NULL,
S_PHONE CHAR(15) NOT NULL,
S_ACCTBAL NUMBER(12,2) NOT NULL,
S_COMMENT VARCHAR(101) NOT NULL,
CONSTRAINT NEW_SUPPLIER_PKEY PRIMARY KEY (S_SUPPKEY),
CONSTRAINT NEW_SUPPLIER_FKEY1 FOREIGN KEY (S_NATIONKEY)
REFERENCES NATION(N_NATIONKEY),
CONSTRAINT NEW_SUPPLIER_CHECK1 CHECK(S_SUPPKEY >= 0) );
CREATE TABLE NEW_PARTSUPP(
PS_PARTKEY NUMBER(12) NOT NULL,
PS_SUPPKEY NUMBER(12) NOT NULL,
PS_AVAILQTY NUMBER(12) NOT NULL,
PS_SUPPLYCOST NUMBER(12,2) NOT NULL,
PS_COMMENT VARCHAR(199) NOT NULL,
CONSTRAINT NEW_PARTSUPP_PKEY PRIMARY KEY (PS_PARTKEY, PS_SUPPKEY),
CONSTRAINT NEW_PARTSUPP_FKEY1 FOREIGN KEY (PS_PARTKEY)
REFERENCES NEW_PART(P_PARTKEY),
CONSTRAINT NEW_PARTSUPP_FKEY2 FOREIGN KEY (PS_SUPPKEY)
REFERENCES NEW_SUPPLIER(S_SUPPKEY),
CONSTRAINT NEW_PARTSUPP_CHECK1 CHECK(PS_PARTKEY >= 0),
CONSTRAINT NEW_PARTSUPP_CHECK2 CHECK(PS_AVAILQTY >= 0),
CONSTRAINT NEW_PARTSUPP_CHECK3 CHECK(PS_SUPPLYCOST >= 0) );
现在,您的过程代码。
CREATE OR REPLACE PROCEDURE THELLO AS
WELCOME VARCHAR(50);
BEGIN
FOR PARTKEY IN (SELECT DISTINCT PS_PARTKEY FROM PARTSUPP)
LOOP
INSERT INTO NEW_PART ( SELECT *
FROM PART
WHERE P_PARTKEY = PARTKEY.PS_PARTKEY );
COMMIT;
END LOOP;
FOR SUPPKEY IN (SELECT DISTINCT PS_SUPPKEY FROM PARTSUPP)
LOOP
INSERT INTO NEW_SUPPLIER ( SELECT *
FROM SUPPLIER
WHERE S_SUPPKEY = SUPPKEY.PS_SUPPKEY );
COMMIT;
END LOOP;
INSERT INTO NEW_PARTSUPP ( SELECT *
FROM PARTSUPP
WHERE PS_PARTKEY IN ( SELECT P_PARTKEY
FROM NEW_PART ) AND
PS_SUPPKEY IN ( SELECT S_SUPPKEY
FROM NEW_SUPPLIER ) );
COMMIT;
END THELLO;
/
MySQL说:文档 1064年的今天,您的SQL语法出现错误;查看与您的MariaDB服务器版本对应的手册,了解第2行“@id INT AS BEGIN SET NO COUNT ON”附近使用的正确语法
我正试图在MySQL中创建一个存储过程,但我一直收到错误消息 #1064年的今天,您的SQL语法出现错误;查看与您的MariaDB服务器版本对应的手册,以了解第1行“DELIMITER”附近使用的正确语法 预期分隔符。(在位置10的“”附近) 我做错了什么?编辑:去掉错误后,现在我的程序只是插入空值,知道为什么吗?
问题内容: 尝试使用一个过程创建简单的程序包: 但是我明白了 任何帮助将不胜感激 问题答案: 包装由包装规格和包装主体组成。您在规范中声明了该过程(假设您希望该过程是公共的)并在主体中实现它。 因此,例如,您将创建包装规格 然后,您将创建包主体
行/COL错误 19/12 PLS-00103:当期望下列之一时遇到符号“=”:。(*@%&=-+at in是mod余数而不是rem,那么<指数(**)><>或!=或~=>=<=<>和或类似于2类似于4类似于多集成员子多集之间的 20/2 PLS-00103:当需要下列操作之一时遇到符号“end”:begin函数pragma过程子类型类型当前游标删除存在之前
我在使用“创建反应应用程序”时遇到编译失败。我得到的信息如下。 __ ./src/App。未找到js模块:您试图导入/联系项目src/目录之外的内容。不支持src/之外的相对导入。您可以将其移动到src/内部,也可以从项目的节点_modules/向其添加符号链接。 __ 奇怪的是,我的src文件夹中肯定有“/联系人”文件,而消息说我没有。这是我的文件夹树。 这是我的应用程序。js代码。 感觉我在这
编译过程 Clojure 语言本身是编译到 JVM Bytecode, 而 ClojureScript 则是编译到 JavaScript. Macros Clojure(Script) 编译过程大概经历三个阶段: 读取: 经字符串, 将 Macro 进行展开 分析: 基于读取的符号构建 AST 生成: 产生目标输出, 比如编译到 JavaScript 这个过程对于 Clojure 和 Clojur