CREATE OR REPLACE PACKAGE BODY a1 IS
PROCEDURE run
IS
BEGIN
a;
b;
END run;
PROCEDURE a
IS
BEGIN
declare a number;
begin
select count(1) into a from user_tables where table_name='A';
if a>0 then
dbms_output.put_line('表存在');
else
dbms_output.put_line('表不存在');
execute IMMEDIATE
'create table F_FINANCE_METRIC
( FINANCE_METRIC_ID VARCHAR2(32) not null,
MONTH ID VARCHAR2(6) not null,
COST_CENTER_ID VARCHAR2(32) not null,
METRIC_VALUE NUMBER(14,2),
constraint PK_F_FINANCE_METRIC primary key (FINANCE_METRIC_ID, MONTH_ID, COST_CENTER_ID)
);
comment on table F_FINANCE_METRIC is
'sdf';
comment on column F_FINANCE_METRIC.FINANCE_METRIC_ID is
'sdf';
comment on column F_FINANCE_METRIC.MONTH_ID is
'sdfsdf';
comment on column F_FINANCE_METRIC.COST_CENTER_ID is
'fdd';
comment on column F_FINANCE_METRIC.METRIC_VALUE is
'sdsd'';end if;END;COMMIT;
END a;
PROCEDURE b
IS
BEGIN
declare a number;
begin
select count(1) into a from user_tables where table_name='bb'; if a>0 then
dbms_output.put_line('表存在');
else
dbms_output.put_line('表不存在');
execute IMMEDIATE
'CREATE TABLE "bb"
( "ID" VARCHAR2(10), "NAME" VARCHAR2(10)) '; end if; END;COMMIT;
END b;END a1;
执行时候 错误 不放在 存储过程里面执行就不报错PACKAGE BODY SYS.A1 编译错误错误:PLS-00103: 出现符号 "SDF"在需要下列之一时:
* & = - + ; < / > at in is
mod remainder not rem return returning <an exponent (**)>
<> or != or ~= >= <= <> and or like like2 like4 likec between
into using || multiset bulk member submultiset
行:27
文本:'sdf';
PROCEDURE run
IS
BEGIN
a;
b;
END run;
PROCEDURE a
IS
BEGIN
declare a number;
begin
select count(1) into a from user_tables where table_name='A';
if a>0 then
dbms_output.put_line('表存在');
else
dbms_output.put_line('表不存在');
execute IMMEDIATE
'create table F_FINANCE_METRIC
( FINANCE_METRIC_ID VARCHAR2(32) not null,
MONTH ID VARCHAR2(6) not null,
COST_CENTER_ID VARCHAR2(32) not null,
METRIC_VALUE NUMBER(14,2),
constraint PK_F_FINANCE_METRIC primary key (FINANCE_METRIC_ID, MONTH_ID, COST_CENTER_ID)
);
comment on table F_FINANCE_METRIC is
'sdf';
comment on column F_FINANCE_METRIC.FINANCE_METRIC_ID is
'sdf';
comment on column F_FINANCE_METRIC.MONTH_ID is
'sdfsdf';
comment on column F_FINANCE_METRIC.COST_CENTER_ID is
'fdd';
comment on column F_FINANCE_METRIC.METRIC_VALUE is
'sdsd'';end if;END;COMMIT;
END a;
PROCEDURE b
IS
BEGIN
declare a number;
begin
select count(1) into a from user_tables where table_name='bb'; if a>0 then
dbms_output.put_line('表存在');
else
dbms_output.put_line('表不存在');
execute IMMEDIATE
'CREATE TABLE "bb"
( "ID" VARCHAR2(10), "NAME" VARCHAR2(10)) '; end if; END;COMMIT;
END b;END a1;
执行时候 错误 不放在 存储过程里面执行就不报错PACKAGE BODY SYS.A1 编译错误错误:PLS-00103: 出现符号 "SDF"在需要下列之一时:
* & = - + ; < / > at in is
mod remainder not rem return returning <an exponent (**)>
<> or != or ~= >= <= <> and or like like2 like4 likec between
into using || multiset bulk member submultiset
行:27
文本:'sdf';
comment 能用在 存储过程里面?
你的要拆成n个execute immediate执行。如下
declare
a number;
begin
select count(1) into a from user_tables where table_name='A';
if a>0 then
dbms_output.put_line('aaa');
else
dbms_output.put_line('bbb');
execute IMMEDIATE
'create table F_FINANCE_METRIC
( FINANCE_METRIC_ID VARCHAR2(32) not null,
MONTH_ID VARCHAR2(6) not null,
COST_CENTER_ID VARCHAR2(32) not null,
METRIC_VALUE NUMBER(14,2),
constraint PK_F_FINANCE_METRIC primary key (FINANCE_METRIC_ID, MONTH_ID, COST_CENTER_ID))';
execute IMMEDIATE 'comment on table F_FINANCE_METRIC is''sdf''';
execute IMMEDIATE 'comment on column F_FINANCE_METRIC.FINANCE_METRIC_ID is ''sdf''';
execute IMMEDIATE 'comment on column F_FINANCE_METRIC.MONTH_ID is ''sdfsdf''';
execute IMMEDIATE 'comment on column F_FINANCE_METRIC.COST_CENTER_ID is ''fdd''';
execute IMMEDIATE 'comment on column F_FINANCE_METRIC.METRIC_VALUE is ''sdsd''';
end if;
END;
/