多个 alter table in execute immediate
multiple alter table in execute immediate
BEGIN
execute immediate '
BEGIN
ALTER TABLE EMPRESA ADD CONSTRAINT pk_empresa_id PRIMARY KEY (EMPRESA_ID);
ALTER TABLE CLIENTE ADD CONSTRAINT pk_cliente_id PRIMARY KEY (CLIENTE_ID);
END';
END;
我想在 PL/SQL 中做这样的事情,但它会抛出一个错误。
我应该怎么做?
问题是您不能 运行 直接在 PLSQL 中进行 DDL。您可以 运行 它们分别立即执行:
BEGIN
execute immediate 'ALTER TABLE EMPRESA ADD CONSTRAINT pk_empresa_id PRIMARY KEY (EMPRESA_ID)';
execute immediate 'ALTER TABLE CLIENTE ADD CONSTRAINT pk_cliente_id PRIMARY KEY (CLIENTE_ID)';
END;
/
试试这个,应该有用
SET DEFINE OFF;
SET SQLBLANKLINES ON;
SET SERVEROUTPUT ON;
DECLARE
column_exists exception;
pragma exception_init (column_exists, -01430);
begin
DBMS_OUTPUT.PUT_LINE ('ALTER TABLE STUDENT TO ADD HISTORY_MKS, ENGLISH_MKS, MATH_MKS');
execute immediate 'alter table STUDENT add(
HISTORY_MKS NUMBER,
ENGLIST_MKS NUMBER,
MATH_MKS NUMBER
)';
exception when column_exists then null;
end;
/
请根据您的需要进行更改,应该可以工作
BEGIN
execute immediate '
BEGIN
ALTER TABLE EMPRESA ADD CONSTRAINT pk_empresa_id PRIMARY KEY (EMPRESA_ID);
ALTER TABLE CLIENTE ADD CONSTRAINT pk_cliente_id PRIMARY KEY (CLIENTE_ID);
END';
END;
我想在 PL/SQL 中做这样的事情,但它会抛出一个错误。
我应该怎么做?
问题是您不能 运行 直接在 PLSQL 中进行 DDL。您可以 运行 它们分别立即执行:
BEGIN
execute immediate 'ALTER TABLE EMPRESA ADD CONSTRAINT pk_empresa_id PRIMARY KEY (EMPRESA_ID)';
execute immediate 'ALTER TABLE CLIENTE ADD CONSTRAINT pk_cliente_id PRIMARY KEY (CLIENTE_ID)';
END;
/
试试这个,应该有用
SET DEFINE OFF;
SET SQLBLANKLINES ON;
SET SERVEROUTPUT ON;
DECLARE
column_exists exception;
pragma exception_init (column_exists, -01430);
begin
DBMS_OUTPUT.PUT_LINE ('ALTER TABLE STUDENT TO ADD HISTORY_MKS, ENGLISH_MKS, MATH_MKS');
execute immediate 'alter table STUDENT add(
HISTORY_MKS NUMBER,
ENGLIST_MKS NUMBER,
MATH_MKS NUMBER
)';
exception when column_exists then null;
end;
/
请根据您的需要进行更改,应该可以工作