您的位置:首页 > 数据库

PL/SQL 基础

2013-06-04 00:00 127 查看
1. 输出设置

DBMS_OUTPUT.PUT_LINE('XXX'); 无显示

原因是 SQLPLUS 需要设置 SET SERVEROUT[ PUT ] ON | OFF

SET SERVEROUTPUT ON SIZE 10000 (
缓冲区支持字符个数,最大
100

)

每次登陆都要设置,也可固化设置:

将设置命令追加到
%ORACLE_HOME%/sqlplus/admin目录下有glogin.sql文件末尾,SQLPLUS连接后会自动执行该脚本

2. 脚本中变量

A. 替换变量

变量前加一个&符号,sqlplus在命令中遇到替换变量时,用真实值去代替,相当于c语言中的宏定义。真实值来源于三个地方:
1) 脚本参数带入
2) 脚本中直接定义
3) 用户动态输入

如:

SQL> select &num from dual;
输入 num 的值: sysdate
原值 1: select &num from dual
新值 1: select sysdate from dual

SYSDATE
--------------
02-11月-12

sqlplus中有几个环境参数将影响替换变量:

SQL> set define off (off表示关闭替换变量功能)
SQL> select &num from dual;
SP2-0552: 未声明绑定变量 "NUM"

脚本带参数

d:\123.sql文件内容:

select * from dept d where d.deptno=&1;

执行:

SQL> @d :\123.sql 10
原值 1: select * from dept d where d.deptno=&1
新值 1: select * from dept d where d.deptno=10

DEPTNO DNAME LOC
---------- -------------- ------------
10 ACCOUNTING NEW YORK

脚本中定义

SQL> define str='Hello World'
SQL> select '&str' from dual;
原值 1: select '&str' from dual
新值 1: select 'Hello World' from dual

'HELLOWORLD
-----------
Hello World

注意:

一般情况下在sqlplus下,执行sql语句时或脚本时,对&字符需要特殊处理一下,因为它是sqlplus中的特殊字符

交互输入

有些信息根据脚本的提示,让用户动态输入,从而在下面的sql语句中使用。
语法为:accept var_name typename prompt ‘hint’ [hide]
说明:hide表示以密文方式让用户输入。typename只能是char,number,date三种

SQL> accept name char prompt '请输入名字:'
请输入名字:scott
SQL> accept passwd char prompt '请输入密码:' hide
请输入密码:
SQL> conn &name/&passwd
已连接。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PL/SQL Oracle基础 交互