在sql plus,pl/sql dev,toad中都可以执行,执行不了的话看看你的pl/sql块是否写的正确,
解决方案 »
- window 7下User权限用户如何运行sqlplus
- sqlplus和pl/sql developer不同步
- where 条件中含有子查询的效率问题
- 如何获得Oracle数据库中,number类型字段的长度?
- 菜鸟问题,希望高手花1分钟来帮解决一下!!
- 请教关于oracle的自定义函数的问题
- oem 到底是个啥?
- ANALYSIS TABLE到底该不该用,什么时候用?
- ORA-06519: active autonomous transaction detected and rolled back
- Ora-19504 Ora-00257 archivelog 不能存档,明明有空间却报空间不足
- 请问结果集?
- oracle建表,有人用object或嵌套表或数组做表字段吗???
已连接到 Oracle8i Enterprise Edition Release 8.1.6.0.0
已连接为 kdcnew
SQL>
SQL> --此PL/SQL块的功能为:清除掉连接时间超过6小时未使用的会话
SQL> DECLARE
2 TYPE V_CURSOR IS REF CURSOR;
3 MYCUR V_CURSOR;
4 V_DDL VARCHAR2(2000);
5 BEGIN
6 OPEN MYCUR FOR
7 SELECT 'alter system kill session ''' || SID || ',' || SERIAL# || ''';'
8 FROM V$SESSION
9 WHERE USERNAME IS NOT NULL
10 AND STATUS = 'INACTIVE'
11 AND LAST_CALL_ET / 60 / 60 >= 6;
12 LOOP
13 FETCH MYCUR
14 INTO V_DDL;
15 EXIT WHEN MYCUR%NOTFOUND;
16 EXECUTE IMMEDIATE V_DDL;
17 END LOOP;
18 CLOSE MYCUR;
19 END;
20 /PL/SQL 过程成功完成SQL>
只能够在匿名快 declare .. begin ..end;
或者function/procedure/package/trigger中执行. 在其他的地方就会报错.如果想在sql语句中实现, 且数据库的版本在oracle817以上可以考虑使用case when end字句