1、ORA-00942: table or view does not exist 指的你要操作的表尚未存在,需要先create出来先。

2、ORA-00922: missing or invalid option 指的是有语法错误。遗漏了分号什么的

3、Warning: Procedure created with compilation errors

比如  create or replace procedure p_test_pro1 is

begin

insert into loginuser(username,passwd) values('admin','123');

end                -------这里遗漏了分号

/

Warning: Procedure created with compilation errors

SQL> show error  --显示出具体的错误所在

Errors for PROCEDURE SCOTT.P_TEST_PRO1:

LINE/COL ERROR

-------- ----------------------------------------------------------------------------------------------------

6/0      PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:       ;      delete exists prior   The symbol ";" was substituted for "end-of-file" to continue.

4、ORA-06576: not a valid function or procedure name     存储过程p_test_pro1尚未创建

call p_test_pro1

ORA-06576: not a valid function or procedure name

5、ORA-06502: PL/SQL: numeric or value error: character to number conversion error

ORA-06512: at "SCOTT.P_TEST_PRO1", line 6

ORA-06512: at line 2

create or replace procedure p_test_pro1 IS

v_pass varchar2(20);

begin

select passwd into v_pass from loginuser where rownum=1;

dbms_output.put_line('密码是:'+v_pass);

end;

当调用p_test_pro1的时候报以上错误,把输出语句中的+改为||

在谈存储过程书写中的一些规则时,先看一下执行它的规则,在命令窗口执行存储过程sp_get_product_prompt

set serveroutput on

var ret1 varchar2(200);

var ret2 varchar2(200);

exec sp_get_product_prompt(83,:ret1,:ret2); --或execute

print ret1;

print ret2;

set serveroutput on

declare

ret1 varchar2(200);

ret2 varchar2(200);

begin

sp_get_product_prompt(83,ret1,ret2);

dbms_output.put_line(ret1);

dbms_output.put_line(ret2);

end;

存储过程入参,不论类型,缺省情况下值都为null,入参和出参不能有长度,其中关键字as可以替换成is,存储过程中变量声明在as和begin之间,同时,存储过程中可以再调用其它的存储过程,如果要保证存储过程之间的事务处理不受影响,可以定义为自治事务。

create or replace procedure say_hello(

v_name in varchar2,

v_flag number,

o_ret out number

)

as

begin

if v_name is null and v_flag is null then--v_name和v_flag都等于null           o_ret := 10;

else

o_ret := 100;

end if;

end;

对于入参为null情况下给予缺省值

create or replace procedure say_hello(

i_name in varchar2,

i_flag number,

o_ret out number

)

as

v_name  varchar2(100);

begin

if i_name is null then

v_name := '0';

else

v_name := i_name;

end if;

insert into phone(..,wname..,) values(..,v_name,..);

end;或直接在insert语句中调用nvl函数赋缺省值     insert into phone(..,wname..,) values(..,nvl(v_name,' '),..); ----如果将' '写成'',则insert进来的v_name值还是为''等价于null值

带一个参数的存储过程   输入参数in,输入参数不能进行:=赋值,但可以将它赋给as后面定义的变量;

输入参数in,可以作为变量进行条件判断;

默认不写就是in;

存储过程没有重载,这个有参的say_hello会替代已经存在的无参say_hello。

create or replace procedure say_hello(v_name in varchar2)

as

begin

--v_name:='a';--存储过程入参v_name不能做为赋值目标        dbms_output.put_line('hello '||v_name);

end;

存储过程输入参数作为变量进行条件判断

create or replace procedure say_hello(

i_opFlag in number

)

as

v_name varchar2(100);

begin

if i_opFlag = 1 then

v_name :='0';

else

v_name :='haha';

end if;

dbms_output.put_line('hello '||v_name);

end;

利用存储过程中定义的变量对入参的空值处理:

create or replace procedure say_hello(

i_name in varchar2

)

as

v_name varchar2(100);

begin

if i_name is null then

v_name :='0';

else

v_name :=i_name;--将入赋值给定义变量

end if;

dbms_output.put_line('hello '||v_name);

end;

多个参数的存储过程

create or replace procedure say_hello(

v_first_name in varchar2,

v_last_name in varchar2)

as

begin

dbms_output.put_line('hello '||v_first_name||'.'||v_last_name);

end;

out输出参数,用于利用存储过程给一个或多个变量赋值,类似于返回值     create or replace procedure say_hello(

v_name in varchar2,

v_content out varchar2

)

begin

v_content:='hello'||v_name;

end;

调用:

declare

v_con varchar2(200);

v_in varchar2(20):='wang';

begin

say_hello(v_in,v_con);

dbms_output.put_line(v_con);

end;

in out参数,既赋值又取值

create or replace procedure say_hello(v_name in out varchar2)

as

begin

v_name:='hi '||v_name;

end;

调用:

declare

v_inout varchar2(20):='wangsu';

begin

say_hello(v_inout);

dbms_output.put_line(v_inout);

end;

对存储过程入参赋缺省值

create or replace procedure say_hello(

v_name varchar2 default 'susu',

v_content varchar2 default 'hello'

)

as

begin

dbms_output.put_line(v_name||' '||v_content);

end;

调用:(用指明形参名的方式调用更好)

begin

say_hello();

end;

begin

say_hello('cheng');

end;

begin

say_hello(v_name=>'cheng');

end;

oracle执行存储过程06576,oracle的存储过程语法相关推荐

  1. oracle 执行计划 ppt,oracle查看执行计划的方法

    查看执行计划的方法 Explain Plan For SQL 不实际执行SQL语句,生成的计划未必是真实执行的计划 必须要有plan_table SQLPLUS AUTOTRACE 除set auto ...

  2. oracle 执行计划耗时,oracle各种执行计划优缺点

    一. 获取oracle执行计划的方法有6种,各自的优缺点如下,根据实际情况进行选择使用: explain plan for 方式 步骤1:explain plan for 后跟着SQL语句 步骤2:s ...

  3. oracle执行存储过程06576,Oracle中执行存储过程call和exec区别

    在sqlplus中这两种方法都可以使用: exec pro_name(参数1..); call pro_name(参数1..); 区别: 1. 但是exec是sqlplus命令,只能在sqlplus中 ...

  4. 利用oracle执行系统命令,利用oracle存储过程执行操作系统命令(转)

    以下方法在WINNT,LINUX下的oracle9i上测试通过,java过程调用系统命令 首先给使用java存储过程的用户授予一定的权限 <>表示所有文件,也可以单独指定文件. r w e ...

  5. oracle+执行变量语句,ORACLE sql 语句的执行过程(SQL性能调整)

    第1章 SQL语句处理的过程 在调整之前我们需要了解一些背景知识,只有知道这些背景知识,我们才能更好的去调整sql语句. 本节介绍了SQL语句处理的基本过程,主要包括: · 查询语句处理 · DML语 ...

  6. oracle执行sql痕迹,Oracle 查询刚执行的SQL

    Oracle 查询刚刚执行的SQL select "SQL_TEXT", "SQL_FULLTEXT", "SQL_ID", "S ...

  7. 查oracle执行的sql,oracle查询正在执行的sql

    --oracle查看锁表进程,杀掉锁表进程 --查看锁表进程SQL语句1: select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_ ...

  8. python oracle 执行commit_Python操纵oracle

    前言 Python自带的模块中有很多操纵文件的.我们可以把文件的数据读出来,经过处理还可以将数据写入文件中.但是对于数据的管理和分析来说,数据库还是专业一些.如果Python能和数据库结合在一起,那么 ...

  9. oracle 执行脚本规则,oracle执行脚本命令总结

    1. 执行一个SQL脚本文件 sqlplus user/pass@servicenamefile_name.sql 或 SQLstart file_names 或 SQL@ file_name 我们可 ...

最新文章

  1. python趣味编程:歌星大奖赛
  2. [并发编程]并发编程第二篇:利用并发编程,实现计算大量数据的和
  3. linux网卡team0,Linux双网卡绑定单个IP之(team)
  4. Linux MySQL5.5的安装
  5. 数据切分——Atlas读写分离Mysql集群的搭建
  6. 如何将 image 转成 base64 字符串?
  7. python中tkinter的使用-下
  8. 江西省普通高考2021艺术楼统考成绩查询,统考成绩查询
  9. 微服务架构实战(二):使用API Gateway
  10. logistic回归模型
  11. 虚拟机ip映射到外网
  12. 达梦数据库的表空间及用户管理
  13. nuxt.js项目打包上传服务器pm2启动各种问题
  14. 28部漫威电影按漫威时间全梳理
  15. 小米商城前端页面(静态)
  16. JDBC bug : You must configure either the server or JDBC driver
  17. Scikit-Learn机器学习(knn算法)
  18. 磁盘smart错误日志重点关注信息
  19. c语言如何将数组里的数排序输出,c程序输入10个数到一维数组中,按升序排序后输出。...
  20. Shell - mkdir

热门文章

  1. linux系统之系统修复
  2. qt开发环境的建立与qte4.6.3、tslib1.4的移植
  3. 微机原理与接口技术知识点整理复习--纯手打
  4. Git强拉远程代码覆盖本地代码
  5. 生成模型和判别模型的对比,懂这俩机器学习不在话下 最大熵模型
  6. PPT使用VBA批量删除图形
  7. 7-2 jmu-python-最佳身高 (10分) Python
  8. python安装第三方库(包)时显示warning黄颜色的报错解决方法
  9. python DES加解密实例(pyDes)
  10. 预警就是踩刹车,六步法定义预警体系