--建表
SQL> create table test(m_id number);
表已创建--建存储过程
SQL> create or replace procedure
2 test_pro(my_id number)
3 as
4 begin
5 insert into test(m_id) values(my_id);
6 end test_pro;
7 /警告: 创建的过程带有编译错误。--执行后的结果
SQL> exec test_pro(1);
BEGIN test_pro(1); END; *
第 1 行出现错误:
ORA-06550: 第 1 行, 第 7 列:
PLS-00905: 对象 SCOTT.TEST_PRO 无效
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored大家帮我分析下是什么原因啊???
SQL> create table test(m_id number);
表已创建--建存储过程
SQL> create or replace procedure
2 test_pro(my_id number)
3 as
4 begin
5 insert into test(m_id) values(my_id);
6 end test_pro;
7 /警告: 创建的过程带有编译错误。--执行后的结果
SQL> exec test_pro(1);
BEGIN test_pro(1); END; *
第 1 行出现错误:
ORA-06550: 第 1 行, 第 7 列:
PLS-00905: 对象 SCOTT.TEST_PRO 无效
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored大家帮我分析下是什么原因啊???
select * from Dba_Objects t where t.Object_Name = 'TEST'
2 test_pro(my_id number)
3 as
4 begin
5 insert into test(m_id) values(my_id);
6 end test_pro;
7 /Procedure created.SQL> exec test_pro(1);PL/SQL procedure successfully completed.SQL> select * from test; M_ID
----------
1
没什么问题。除非你的scott用户没有创建存储过程的权限。
m_id NUMBER(18,0)
);CREATE OR REPLACE PROCEDURE
test_pro(my_id NUMBER)
AS
BEGIN
INSERT INTO test(m_id) VALUES(my_id);
COMMIT;
END test_pro;
/EXEC test_pro(1);
SQL> create table test(m_id number) tablespace myts;表已创建。SQL> create or replace procedure test_pro(my_id number)
2 as
3 begin
4 insert into test values(my_id);
5 end;
6 /过程已创建。SQL> exec test_pro(1);PL/SQL 过程已成功完成。SQL> select * from test; M_ID
----------
1--我是用system下登陆进行的 ,你的显示PLS-00905: 对象 SCOTT.TEST_PRO 无效 是因为你当前用户没有权限--在管理员下运行这句语句给SCOTT用户授权。
grant execute any procedure to SCOTT
GRANR EXECUTE ON SCOTT.TEST TO USER_A;
oracle QQ群:54775466
欢迎大家来一起探讨。