ORACLE ÅжϱíÊÇ·ñ´æÔÚ£¬´æÔÚÔòɾ³ý·½·¨
Oracl Êý¾Ý¿âҲûÓиö°ë¶Î±íÊÇ·ñ´æÔÚ£¬´æÔÚÔòɾ³ýµÄÓï¾ä£¬¾¹ýÑо¿ºÍ¸ÄдËûÈ˵ķ½·¨ÏÈÂ¡ÖØÍÆ³ö¾ø¶ÔÄÜÓÃÐÔµÄOracleÅжϱíÊÇ·ñ´æÔÚ£¬´æÔÚÔòɾ³ý·½·¨£¬ÔÚOracle10gÉÏÊÔÑéͨ¹ý¡£
·½·¨
CREATE OR REPLACE FUNCTION PROC_NAME(T_NAME IN VARCHAR2) RETURN NUMBER IS
V_CNT number;
V_SQL VARCHAR2(100);
BEGIN
V_CNT := 0;
SELECT COUNT(*) INTO V_CNT from USER_TABLES WHERE TABLE_NAME = T_NAME;
IF V_CNT = 0 THEN
RETURN 0;
else
V_SQL := 'DROP TABLE ' || T_NAME;
execute immediate V_SQL;
DBMS_OUTPUT.PUT_LINE(V_SQL ||' Ö´Ðгɹ¦');
RETURN 1;
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLCODE || SQLERRM);
DBMS_OUTPUT.PUT_LINE(V_SQL);
RETURN 3;
end;
µ÷ÓÃ
BEGIN
IF PROC_NAME(TABLE_NAME) = 0 THEN
DBMS_OUTPUT.PUT_LINE('OK');
END IF;
END;
/
Ïà¹ØÎĵµ£º
oracle²¹¶¡ÏÂÔØ
¹Ø¼ü×Ö: oracle
9.2.0.4 = 3095277
9.2.0.5 = 3501955
9.2.0.6 = 3948480
9.2.0.7 = 4163445
9.2.0.8 = 4547809£¨9i×îÖÕ£©
10.1.0.3 = 3761843
10.1.0.4 = 4163362
10.1.0.5 = 4505133
10.2.0.2 = 4547817
10.2.0.3 = 5337014
10.2.0.4 = 6810189 ......
½ñÌìɾ³ýµÄ±í¿Õ¼ä°üº¬ÎﻯÊÓͼ±¨´í£¬ORA-23515: ʵÌ廯ÊÓͼºÍ/»òËüÃǵÄË÷Òý´æÔÚÓÚ±í¿Õ¼äÖÐ
¿´À´ÊÇÐèҪɾ³ýÎﻯÊÓͼ£¬Ö´ÐÐɾ³ý²Ù×÷£¬ÒòΪÊý¾ÝÌ«´óÁË£¬°ëÌìҲûŪÍ꣬ȡÏûÁË£¬ÉÏÍø²éÁíÍâÒ»ÖÖ·½·¨£¬É¾³ýÓû§£¬Ö¸¶¨cascade ²ÎÊý£¬ÕâÑù¾Í¿ÉÒÔÁË
ÎÒÊÔÁËһϸоõÓÃ
drop user user_name cascade;
ɾ³ýµÄ»¹ÊÇͦ¿ìµÄ£¬±Èɾ³ýÎï ......
1¡¢´æ´¢¹ý³ÌºÍº¯ÊýµÄÇø±ð¡£
£¨1£©¡¢´æ´¢¹ý³ÌÊÇ×÷ΪPL/SQLÓï¾äÖ´ÐУ¬¶øº¯ÊýÊÇ×÷Ϊ±í´ïʽµÄÒ»²¿·Öµ÷Óã»
£¨2£©¡¢´æ´¢¹ý³ÌÔÚ¹æ¸ñ˵Ã÷Öв»°üº¬returnÓï¾ä£¬¶øÔÚº¯ÊýµÄ¹æ¸ñ˵Ã÷Õâ°üº¬return×Ӿ䣻
(3)¡¢´æ´¢¹ý³Ì²»·µ»ØÖµ£¬¶øº¯Êý±ØÐë·µ»ØÖµ£»
£¨4£©¡¢ÔÚ´æ´¢¹ý³ÌÖпÉÒÔ°üº¬returnÓï¾ä£¬µ«²»·µ»ØÈκÎÖ ......
create or replace procedure getok
as
cursor mycur is select ids,name from aaa where name not in (select names from ok);
vempno aaa.ids%type;
vename aaa.name%type;
begin
open mycur;
loop
fetch mycur into vempno,vename;
exit when mycur%notfound;
if mycur%found then
insert ......