存储过程出现 SQL statement ignored错误

create or replace procedure user_procc
is
is_age number;
is_birth date;
is_code varchar2;

begin
select birthady into is_birth from t_user;
select floor((sysdate-is_birth)/365) into is_age from dual;
end;
if is_age>60 then
begin
select identity_card_number into is_code from t_user;
is_age:=floor((sysdate-to_date(substr(is_code,7,8),'yyyy-MM-dd'))/365);
update t_user
set age=is_age;
end;
else
begin
update t_user
set age= is_age;
end;

哪里错了、请懂的人帮帮忙、刚学习存储过程
我在PL/SQL中调用的sql块是
begin
user_procc();
commit;
end;

存储过程出现 SQL statement ignored错误是:存储过程语句错误,字段或变量名可能拼错,导致存储过程无法执行。

解决方法:仔细检查存储过程里的变量,字段,语句等是否正确。

PL/SQL的特点:

1、PL/SQL是一种块结构语言,一个PL/SQL程序就是一个块,块中可以嵌套子块,能够使一组SQL语句的功能更具模块化程序特点;

2、每个块中可以定义变量,变量的作用范围仅限于该块;

3、PL/SQL程序块中可以使用SQL的查询语句,DML(表的增删改操作)语句及事务处理语句,可以对程序中的错误进行自动处理,使程序能够在遇到错误的时候不会被中断;

4、PL/SQL程序大小写不敏感。

5、Oracle中的PL/SQL引擎负责解释和执行PL/SQL程序,PL/SQL程序可以直接和SQL引擎进行交互。

PL/SQL引擎的作用:

编写的SQL语句,通过网络、java程序或者客户端工具发送给关系型数据库管理系统,PL/SQL引擎负责拿到这个字符串(SQL语句就是一个字符串文本格式),对其SQL语句进行语法分析,判断该SQL语句否符合Oracle中的语法要求,若符合,则执行SQL语句.

PL/SQL程序块与SQL语言的区别:

1、SQL语句:通过多条SQL语句实现功能时,每条语句都需要在客户端和服务端传递,而且每条语句的执行结果也需要在网络中进行交互,占用了大量的网络带宽,消耗了大量网络传递的时间,而在网络中传输的那些结果,往往都是中间结果,而不是我们所关心的。

2、PL/SQL程序块:而使用PL/SQL程序是因为程序代码存储在数据库中,程序的分析和执行完全在数据库内部进行,用户所需要做的就是在客户端发出调用PL/SQL的执行命令,数据库接收到执行命令后,在数据库内部完成整个PL/SQL程序的执行,并将最终的执行结果反馈给用户。在整个过程中网络里只传输了很少的数据,减少了网络传输占用的时间,所以整体程序的执行性能会有明显的提高。

PL/SQL块有以下三部分组成:

声明部分(可选):声明常量、变量、复杂数据类型、游标等;
(执行部分(必须):包含若干语句以实现特定功能;
异常处理部分(可选):处理运行错误

PL/SQL块结构:

declare
声明部分
begin
执行部分,可包含SQL语句或PL/SQL控制语句
exception
异常处理部分
end;


温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-10
是执行到哪句错了?
还是编译就没过?追问

我运行创建存储过程的时候没有报错、是执行调用的时候报错说我调用的存储过程是无效的、、、是不是我的存储过程写错了、我才学了一天、上面的是我参照一些资料写的、不知道对不对!

追答

需要单调一下
看看存储过程是不是调用进去了
如果没进去 就是调用接口写的不对
看看调用的名称 参数 是不是都正确

如果进去了 那一定就是过程里面报错了

追问

能帮忙看看有语法错吗?

追答

就凭这么看太费劲了
你有环境跟进去
一下子就发现问题了

追问

能弱弱的问一句怎么跟进吗?

追答

我已经说到吃饭了
拿筷子的本身得靠自己了

追问

哎、我今天刚解除这玩意、算了我在研究吧!

追答

没你想象的难
坚持下去 必有所成
麻烦采纳

本回答被提问者采纳
相似回答