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. MapReduce编程系列 — 2:计算平均分
  2. python读文件每一行、并把这行替换-python基础--文件操作实现全文或单行替换
  3. java语言中解释方式是什么意思,Java语言快速入门·简答T
  4. ArcGIS符号异常问题
  5. 需求获取安排计划书_6分钟教你写一份融资计划书
  6. Bower介绍及用法(转)
  7. 第二阶段冲刺——个人总结07
  8. JavaScript封装缓动动画函数
  9. AHP层次分析法具体操作
  10. 组成原理---控制器
  11. Cloudera迁移scm数据库
  12. BT Openreach批发FTTP网络推出千兆宽带服务
  13. X射线辩材--CT原理
  14. 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被
  15. mac自带邮箱添加邮箱_如何在Mac上的Mail中创建或删除邮箱
  16. 22KDD : COSTA Covariance-Preserving Feature Augmentation for Graph Contrastive Learning
  17. Vuetify Carouse轮播图 图片切换导致页面总是自动跳转到轮播图位置
  18. React基础学习(一)
  19. copy.copy()与copy.deepcopy()的详解
  20. 阿里云负载均衡白名单自动修改脚本

热门文章

  1. MySQL 清空表中数据
  2. STP生成树详解_01
  3. Even if you get no applause, you should accept a curtain call gracefully and app
  4. 关于Freesurfer6.0海马体的分割环境以及步骤
  5. JavaScript--倒计时
  6. 新店速递|白玉兰(商务)酒店福州火车站西湖长冠店 正式上线
  7. 金融知识小科普 - 央行逆回购
  8. 用Python编写一个电子考勤系统
  9. OpenCV4学习笔记(30)——透视变换(投影变换)
  10. FRM-30425: Summarized database item must reside in a block with Query All Records or Precompute Summ