create or replace procedure create_table as
begin
execute immediate
'create table emp2(
id number,
name varchar2(10),
salary number)'; --动态SQL为DDL语句
insert into emp2
values (100,'jacky',5600);
insert into emp2
values (101,'rose',3000);
insert into emp2
values (102,'john',4500);
end create_table;
/
create or replace procedure create_table as
begin
execute immediate
'create table emp2(
id number,
name varchar2(10),
salary number)'; --动态SQL为DDL语句
execute immediate 'insert into emp2
values (100,''jacky'',5600)';
execute immediate 'insert into emp2
values (101,''rose'',3000)';
execute immediate 'insert into emp2
values (102,''john'',4500)';
end create_table;
#3
修改之后这样,运行还是出现这个提示。
create or replace procedure create_table as
begin
execute immediate
'create table emp2(
id number,
name varchar2(10),
salary number)'; --动态SQL为DDL语句
execute immediate 'insert into emp2
values (100,'jacky',5600)';
execute immediate '
insert into emp2
values (101,'rose',3000)';
execute immediate '
insert into emp2
values (102,'john',4500)';
end create_table;
/
#4
原来还得加个引号,谢谢了
#5
'引号得转义,用我给你写的那个
#6
create or replace procedure create_table as
begin
execute immediate
'create table emp2(
id number,
name varchar2(10),
salary number
)';--动态SQL为DDL语句
insert into emp2
values (100,'jacky',5600);
insert into emp2
values (101,'rose',3000);
insert into emp2
values (102,'john',4500);
end create_table;
执行通过,没有报错啊。
楼主看看是不是你的英文符号哪里写成了中文的了
#7
create or replace procedure create_table as
begin
execute immediate
'create table emp2(
id number,
name varchar2(10),
salary number
)';--动态SQL为DDL语句
insert into emp2
values (100,'jacky',5600);
insert into emp2
values (101,'rose',3000);
insert into emp2
values (102,'john',4500);
end create_table;
执行通过,没有报错啊。
楼主看看是不是你的英文符号哪里写成了中文的了
没有写错,name一列的数据 再加上单引号就行了
#8
create or replace procedure create_table as
begin
execute immediate
'create table emp2(
id number,
name varchar2(10),
salary number
)';--动态SQL为DDL语句
insert into emp2
values (100,'jacky',5600);
insert into emp2
values (101,'rose',3000);
insert into emp2
values (102,'john',4500);
end create_table;
执行通过,没有报错啊。
楼主看看是不是你的英文符号哪里写成了中文的了
没有写错,name一列的数据 再加上单引号就行了
没注意看,这段SQL编译能通过,执行时候会报错。找不到表或者视图。二楼说的是对的
#9
create or replace procedure create_table as
begin
execute immediate
'create table emp2(
id number,
name varchar2(10),
salary number)'; --动态SQL为DDL语句
execute immediate 'insert into emp2
values (100,''jacky'',5600)';
execute immediate 'insert into emp2
values (101,''rose'',3000)';
execute immediate 'insert into emp2
values (102,''john'',4500)';
end create_table;
create or replace procedure create_table as
begin
execute immediate
'create table emp2(
id number,
name varchar2(10),
salary number)'; --动态SQL为DDL语句
execute immediate 'insert into emp2
values (100,''jacky'',5600)';
execute immediate 'insert into emp2
values (101,''rose'',3000)';
execute immediate 'insert into emp2
values (102,''john'',4500)';
end create_table;
create or replace procedure create_table as
begin
execute immediate
'create table emp2(
id number,
name varchar2(10),
salary number)'; --动态SQL为DDL语句
execute immediate 'insert into emp2
values (100,''jacky'',5600)';
execute immediate 'insert into emp2
values (101,''rose'',3000)';
execute immediate 'insert into emp2
values (102,''john'',4500)';
end create_table;
*
第 1 行出现错误:
ORA-01031: 权限不足
ORA-06512: 在 "SCOTT.CREATETABLE", line 3
ORA-06512: 在 line 1
对于单独创建表的sql语句是可行的。
SQL> create table pp(
2 id number(4));
表已创建。
#16
你是再scott下执行的是么,我试一下。。
#17
是的。后来换到system as sysdba下就正常运行了
#18
我才试验了一下,只要scott有create any table权限,就可以正常执行。。
#19
我才试验了一下,只要scott有create any table权限,就可以正常执行。。
不知道,我试了一下 sql语句就可以创建表,上面的存储过程就不行。权限提升之后就可以正常运行。
#20
我才试验了一下,只要scott有create any table权限,就可以正常执行。。
不知道,我试了一下 sql语句就可以创建表,上面的存储过程就不行。权限提升之后就可以正常运行。
-- Grant/Revoke role privileges
grant connect to SCOTT;
grant resource to SCOTT;
-- Grant/Revoke system privileges
grant create any table to SCOTT;
grant unlimited tablespace to SCOTT;
上面是我scott的所有权限,运行存储过程没问题,你再试试吧。。
#21
我才试验了一下,只要scott有create any table权限,就可以正常执行。。
不知道,我试了一下 sql语句就可以创建表,上面的存储过程就不行。权限提升之后就可以正常运行。
-- Grant/Revoke role privileges
grant connect to SCOTT;
grant resource to SCOTT;
-- Grant/Revoke system privileges
grant create any table to SCOTT;
grant unlimited tablespace to SCOTT;
上面是我scott的所有权限,运行存储过程没问题,你再试试吧。。
你使用了grant create any table to SCOTT; 加了这个权限,当然是可以的啦.
create or replace procedure create_table as
begin
execute immediate
'create table emp2(
id number,
name varchar2(10),
salary number)'; --动态SQL为DDL语句
execute immediate 'insert into emp2
values (100,''jacky'',5600)';
execute immediate 'insert into emp2
values (101,''rose'',3000)';
execute immediate 'insert into emp2
values (102,''john'',4500)';
end create_table;
修改之后这样,运行还是出现这个提示。
create or replace procedure create_table as
begin
execute immediate
'create table emp2(
id number,
name varchar2(10),
salary number)'; --动态SQL为DDL语句
execute immediate 'insert into emp2
values (100,'jacky',5600)';
execute immediate '
insert into emp2
values (101,'rose',3000)';
execute immediate '
insert into emp2
values (102,'john',4500)';
end create_table;
/
#4
create or replace procedure create_table as
begin
execute immediate
'create table emp2(
id number,
name varchar2(10),
salary number)'; --动态SQL为DDL语句
execute immediate 'insert into emp2
values (100,''jacky'',5600)';
execute immediate 'insert into emp2
values (101,''rose'',3000)';
execute immediate 'insert into emp2
values (102,''john'',4500)';
end create_table;
修改之后这样,运行还是出现这个提示。
create or replace procedure create_table as
begin
execute immediate
'create table emp2(
id number,
name varchar2(10),
salary number)'; --动态SQL为DDL语句
execute immediate 'insert into emp2
values (100,'jacky',5600)';
execute immediate '
insert into emp2
values (101,'rose',3000)';
execute immediate '
insert into emp2
values (102,'john',4500)';
end create_table;
/
'引号得转义,用我给你写的那个
#6
create or replace procedure create_table as
begin
execute immediate
'create table emp2(
id number,
name varchar2(10),
salary number
)';--动态SQL为DDL语句
insert into emp2
values (100,'jacky',5600);
insert into emp2
values (101,'rose',3000);
insert into emp2
values (102,'john',4500);
end create_table;
执行通过,没有报错啊。
楼主看看是不是你的英文符号哪里写成了中文的了
#7
create or replace procedure create_table as
begin
execute immediate
'create table emp2(
id number,
name varchar2(10),
salary number
)';--动态SQL为DDL语句
insert into emp2
values (100,'jacky',5600);
insert into emp2
values (101,'rose',3000);
insert into emp2
values (102,'john',4500);
end create_table;
执行通过,没有报错啊。
楼主看看是不是你的英文符号哪里写成了中文的了
没有写错,name一列的数据 再加上单引号就行了
#8
create or replace procedure create_table as
begin
execute immediate
'create table emp2(
id number,
name varchar2(10),
salary number
)';--动态SQL为DDL语句
insert into emp2
values (100,'jacky',5600);
insert into emp2
values (101,'rose',3000);
insert into emp2
values (102,'john',4500);
end create_table;
执行通过,没有报错啊。
楼主看看是不是你的英文符号哪里写成了中文的了
没有写错,name一列的数据 再加上单引号就行了
没注意看,这段SQL编译能通过,执行时候会报错。找不到表或者视图。二楼说的是对的
#9
create or replace procedure create_table as
begin
execute immediate
'create table emp2(
id number,
name varchar2(10),
salary number)'; --动态SQL为DDL语句
execute immediate 'insert into emp2
values (100,''jacky'',5600)';
execute immediate 'insert into emp2
values (101,''rose'',3000)';
execute immediate 'insert into emp2
values (102,''john'',4500)';
end create_table;
create or replace procedure create_table as
begin
execute immediate
'create table emp2(
id number,
name varchar2(10),
salary number)'; --动态SQL为DDL语句
execute immediate 'insert into emp2
values (100,''jacky'',5600)';
execute immediate 'insert into emp2
values (101,''rose'',3000)';
execute immediate 'insert into emp2
values (102,''john'',4500)';
end create_table;
create or replace procedure create_table as
begin
execute immediate
'create table emp2(
id number,
name varchar2(10),
salary number)'; --动态SQL为DDL语句
execute immediate 'insert into emp2
values (100,''jacky'',5600)';
execute immediate 'insert into emp2
values (101,''rose'',3000)';
execute immediate 'insert into emp2
values (102,''john'',4500)';
end create_table;
*
第 1 行出现错误:
ORA-01031: 权限不足
ORA-06512: 在 "SCOTT.CREATETABLE", line 3
ORA-06512: 在 line 1
对于单独创建表的sql语句是可行的。
SQL> create table pp(
2 id number(4));
表已创建。
#16
你是再scott下执行的是么,我试一下。。
#17
是的。后来换到system as sysdba下就正常运行了
#18
我才试验了一下,只要scott有create any table权限,就可以正常执行。。
#19
我才试验了一下,只要scott有create any table权限,就可以正常执行。。
不知道,我试了一下 sql语句就可以创建表,上面的存储过程就不行。权限提升之后就可以正常运行。
#20
我才试验了一下,只要scott有create any table权限,就可以正常执行。。
不知道,我试了一下 sql语句就可以创建表,上面的存储过程就不行。权限提升之后就可以正常运行。
-- Grant/Revoke role privileges
grant connect to SCOTT;
grant resource to SCOTT;
-- Grant/Revoke system privileges
grant create any table to SCOTT;
grant unlimited tablespace to SCOTT;
上面是我scott的所有权限,运行存储过程没问题,你再试试吧。。
#21
我才试验了一下,只要scott有create any table权限,就可以正常执行。。
不知道,我试了一下 sql语句就可以创建表,上面的存储过程就不行。权限提升之后就可以正常运行。
-- Grant/Revoke role privileges
grant connect to SCOTT;
grant resource to SCOTT;
-- Grant/Revoke system privileges
grant create any table to SCOTT;
grant unlimited tablespace to SCOTT;
上面是我scott的所有权限,运行存储过程没问题,你再试试吧。。
你使用了grant create any table to SCOTT; 加了这个权限,当然是可以的啦.