查询空表,一列,select 2013 AS year from
dual。
|
PLSQL输出语句
DBMS_OUTPUT.PUT_LINE(***)。
在output可以看到结果,相当于java的system.out.println 和 c++的 cout
但是pl/sql的比较弱,不能实时展示结果,要运行到end才会一次性显示结果。
而且在一个存储过程中不能使用太多次DBMS_OUTPUT.PUT_LINE,由于一次性输出,所以在执行到END之前,输出函数都会将结果保存在缓存区。用太多次会导致缓冲区放不下,会报错哒。
|
case when ... then ... else ... end 作用类似于decode函数。
或者像下面:
ELSE NULL
END) 男生数,
COUNT (CASE WHEN sex = 2 THEN 1
ELSE NULL
END) 女生数
FROM students GROUP BY grade;
除此之外,在CASE WHEN 里面可以使用EXISTS关键字,例如:
CASE EXISTS(SELECT 1 FROM TABLE1 T1 WHERE T1.COL1=T2.COL1) THEN 1ELSE 0 END,....
|
select /*+parallel(a,4)*/ * from a 其中/*+parallel(a,4)*/表示多个线程并行执行,能够提高速度。
|
/*+提示信息*/ 用于SQL语句优化。
|
sql中的
游标用在多行语句中,游标类似于C++中的指针,或者java中的iterator能够一行一行的迭代多行数据。
|
定义记录类型相当于定义一个含有多个返回值的类。
|
触发器:当事件被触发时隐式的执行,事件指update,insert,delete...
|
oracle执行一条字符串sql语句的方法为:
declare
sql varchar2(100);
begin
sql := .....;
execute immediate command;
end;
|
WITH ... AS 用法
|
如果要加快数据库查询的速度,可以采用不写日志和并发的方式执行,具体方法可以上网找,因为数据库几乎所有操作都会写日志,所以不写日志对于查询数据过大的情况会加快很多。
|
如果不采用pl/sql直接进入oracle服务器,可以采用指令对数据库进行操作。
|
PL\SQL在字符串中使用单引号“'” 在字符串中使用“''”,两个连接单引号可以表示一个单引号,第一个单引号表示“跳过” 例如: select 'select * from table where name = ''yanghuanbin'' ' from dual; 输出结果为: select * from table where name = 'yanghuanbin' |
特殊符号ascii定义
制表符 chr(9) 换行符 chr(10) 回车符 chr(13) |
在存储过程中返回多行需要用到游标:
DECLARE
query_sql
varchar2
(
100
);
queryresult
varchar2
(
50
);
bizcursor
SYS_REFCURSOR
;
type
my_record
is
record
(
servid
NUMBER
(
16
),
custid
NUMBER
(
16
));
my_rec my_record;
BEGIN
query_sql:=
'select servid,custid from sys_servst where rownum<10'
;
OPEN
bizcursor
FOR
query_sql;
loop
fetch
bizcursor
into
my_rec;
--判读是否提取到值,没取到值就退出
--取到值c_job%notfound 是false
--取不到值c_job%notfound 是true
exit
when
bizcursor%
notfound
;
dbms_output.put_line(my_rec.servid||
|
PL/SQL实战积累
最新推荐文章于 2024-06-21 09:32:20 发布
本文分享了在实际工作中积累的PL/SQL编程经验,包括高效的数据操作、事务管理以及错误处理策略,有助于提升Oracle数据库开发能力。
摘要由CSDN通过智能技术生成