oracle 斜线出现次数,oracle一些操作小知识

1、

复制表结构和表中数据

create table emp_ly

as select *

from emp;

说明:注意复制表结构及数据不是sql

server里面的语法select * into emp_ly from

emp,这在oracle里面行不通,当然如果仅复制结构的话使用

只复制表结构

create table emp_ly as

select * from

emp where

1<>1;

2、

创建一个存储过程

create or replace procedure Sal_raise(emp_no

number,shuliang number)

as

begin

update emp_ly set sal=sal +

shuliang where empno=emp_no;

end;

/

说明:一定不能少begin

end;这两个关键字,不然创建存储过程会有提示

Warning: Procedure created with

compilation errors

意思是:警告,存储过程虽然创建了,但是有编译错误。

查看运行错误可以输入 SHOW ERRORS;

存储过程的声明参数类型时不能带长度,精度或者范围,比如这个存储过程emp_no

number这个参数,就不能声明为emp_no

number(4),同理,varchar2作为参数的类型是可以的,但是以varchar2(10)作为参数类型是不行的。

在sql

plus里面创建存储过程,最后一个反斜线不能少,这是告诉编译器运行这个PL/SQL块,但是在pl/sql developer的SQL

Window创建则不需要这个反斜线,选择输入的代码按F8键执行即可,缺点是编译出错不会提示。

3、

调用存储过程

A.在存储过程或者触发器中调用存储过程

使用存储过程名和参数即可,比如Sal_raise(7369,200);

B. 从交互式oracle工具中调用存储过程

在sql

plus中调用,可以使用匿名块的方式调用,如

begin

Sal_raise(7369,200);

end;

/

还可以使用EXECUTE或者CALL的语法调用,如

execute

Sal_raise(7369,200);

call

Sal_raise(7369,200);

值得注意的是,在sql

plus中执行完了,如果没有输入明确的commit;命令数据是不会实际写到表的,但是在SQL

Window窗口中只能通过

begin

Sal_raise(emp_no=>7369,shuliang=>200);

end;

方式调用存储过程,而且执行结果不需要输入commit;命令也会直接写入表。

4、

传入存储过程参数的三种方法:

Execute Sal_raise(7369,200);

Execute

Sal_raise(shuliang=>200,

emp_no=>7369);

execute

Sal_raise(7369,shuliang=>200);

第一种为常用方法,传入参数顺序和存储过程声明参数顺序一样

第二种为参数名称和参数值一一对应法,可以不按照存储过程声明参数顺序传入。

第三种为混合法,要求没有参数名称的值要写在前面,还需要按照声明参数的顺序才行,比如execute

sal_raise(200,emp_no=>7369);就是不行的。

5、

查看存储过程代码

如果查看存储过程的所有者,创建时间,是否有效等信息可以使用如下语句:

select * from all_objects where

object_name='SAL_RAISE';

如果要查看存储过程的代码,则可以使用如下代码:

select text from all_source where

name='SAL_RAISE' order by line;

请一定注意的是:上面着两个sql要有记录返回,一定要将存储过程的名字全部用大写,否则会没有记录返回。

6、

带输出参数的存储过程

稍微改造下成为带输出参数的存储过程:

create or replace procedure

Sal_raise(emp_no number,shuliang number,sal_now out

number)

as

begin

update emp_ly set sal=sal +

shuliang where empno=emp_no;

select sal into sal_now from

emp_ly where empno=emp_no;

end;

调用方法和不带输出参数的存储过程差不多,只不过需要声明一个合适类型的变量来接收输出参数而已。

set serveroutput on;

--主要用于后面的DBMS_OUTPUT要显示结果

declare sal_now number;

begin

Sal_raise(7369,200,sal_now);

DBMS_OUTPUT.PUT_LINE(TO_CHAR(sal_now));

end;

7、

删除存储过程

DROP PROCEDURE

Sal_raise

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值