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 into ok values(vempno,vename);
end if;
end loop;
dbms_output.put_line('I Found You!'||mycur%rowcount||'ÐÐ');
close mycur;
end getok;
±¾ÎÄÀ´×ÔCSDN²©¿Í£¬×ªÔØÇë±êÃ÷³ö´¦£ºhttp://blog.csdn.net/lixianzhang0493/archive/2009/12/31/5109682.aspx ......
Á½¸ö×Ó²éѯ½øÐм¯ºÏÔËÐУ¬ Ìõ¼þ¾ÍÊÇÁ½¸ö²éѯµÄ×ֶθöÊýÒ»Ö£¬ÀàÐÍÒ»Ö£¬×Ö¶ÎÃû¿ÉÒÔ²»Í¬¡£
SQL> select * from ta;
ID NAME
---------- --------------------
1 gorey
2 gorey2
SQL> select * from tb;
ID ADDRESS
---------- --------------------
2 g2
3 g3
2 gorey2
SQL> select * from ta union select * from tb;
ID NAME
---------- --------------------
1 gorey
2 g2
2 gorey2
3 g3
¡öunionС½á£º ×󼯺ϣ«ÓÒ¼¯ºÏ£¬¡¡µ«ÊÇÓÐÖØ ......
TO_DATE¸ñʽ
Day:
dd number 12
dy abbreviated fri
day spelled out friday
ddspth spelled out, ordinal twelfth
Month:
mm number 03
mon abbreviated mar
month spelled out march
Year:
yy two digits 98
yyyy four digits 1998
24Сʱ¸ñʽÏÂʱ¼ä·¶Î§Îª£º 0:00:00 - 23:59:59....
12Сʱ¸ñʽÏÂʱ¼ä·¶Î§Îª£º 1:00:00 - 12:59:59 ....
1.
ÈÕÆÚºÍ×Ö·ûת»»º¯ÊýÓ÷¨£¨to_date,to_char£©
2.
select to_char( to_date(222,'J'),'Jsp') from dual
ÏÔʾTwo Hundred Twenty-Two
3.
ÇóijÌìÊÇÐÇÆÚ¼¸
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;
ÐÇÆÚÒ»
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;
monday
ÉèÖÃÈÕÆÚÓïÑÔ
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
Ò²¿ÉÒÔÕâÑù
TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DAT ......
ת×Ô£ºhttp://download.oracle.com/docs/cd/B13789_01/server.101/b10759/statements_6004.htm
Creating User-Defined Operators: Example
This example creates a very simple functional implementation of equality and then creates an operator that uses the function:
CREATE FUNCTION eq_f(a VARCHAR2, b VARCHAR2) RETURN NUMBER AS
BEGIN
IF a = b THEN RETURN 1;
ELSE RETURN 0;
END IF;
END;
/
CREATE OPERATOR eq_op
BINDING (VARCHAR2, VARCHAR2)
RETURN NUMBER
USING eq_f;
......
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Êý¾Ý¿âÖÐΪÁ˸üºÃµÄ¹ÜÀí´óÈÝÁ¿µÄÊý¾Ý£¬×¨ÃÅ¿ª·¢ÁËһЩ¶ÔÓ¦µÄ´ó¶ÔÏóÊý¾ÝÀàÐÍ¡£¾ßÌåµÄÀ´Ëµ£¬ÓÐÈçϼ¸ÖÖ£º
¡¡¡¡Ò»ÊÇBLOBÊý¾ÝÀàÐÍ¡£ËüÊÇÓÃÀ´´æ´¢¿É±ä³¤¶ÈµÄ¶þ½øÖÆÊý¾Ý¡£ÓÉÓÚÆä´æ´¢µÄÊÇͨÓõĶþ½øÖÆÊý¾Ý£¬Îª´ËÔÚÊý¾Ý¿âÖ®¼ä»òÕßÔÚ¿Í»§¶ËÓë·þÎñÆ÷Ö®¼ä½øÐд«ÊäµÄʱºò£¬²»ÐèÒª½øÐÐ×Ö·û¼¯µÄת»»¡£Îª´ËÆä´«ÊäµÄЧÂʱȽϸߣ¬¶ø²»ÈÝÒ׳öÏÖÂÒÂëÏÖÏó¡£
¡¡¡¡¶þÊÇCLOBÊý¾ÝÀàÐÍ¡£ËûÖ÷ÒªÊÇÓÃÀ´´æ´¢¿É±ä³¤¶ÈµÄ×Ö·ûÐÍÊý¾Ý£¬Ò²¾ÍÊÇÆäËûÊý¾Ý¿âÖÐÌáµ½µÄÎı¾ÐÍÊý¾ÝÀàÐÍ¡£ËäȻ˵VARCHAR2Êý¾ÝÀàÐÍÒ²¿ÉÒÔÓÃÀ´´æ´¢¿É±ä³¤¶ÈµÄ×Ö·ûÐÍÊý¾Ý£¬µ«ÊÇÆäÈÝÁ¿ÊǷdz£ÓÐÏ޵ġ£¶øÏÖÔÚÕâ¸öCLOBÊý¾ÝÀàÐÍ£¬Æä¿ÉÒÔ´æ´¢µÄ×î´óÊý¾ÝÁ¿ÊÇ4GB¡£¶øÇÒÔÚ¶¨ÒåÕâ¸öÊý¾ÝÀàÐ͵Äʱºò£¬²»ÐèÒªÖ¸¶¨×î´ó³¤¶È¡£ÔÚ¶¨ÒåVarchar2Êý¾ÝÀàÐÍʱÐèÒªÖ¸¶¨¡£
¡¡¡¡ÈýÊÇNCLOBÊý¾ÝÀàÐÍ¡£Õâ¸öÊý¾ÝÀàÐ͸úCLOBÊý¾ÝÀàÐÍÏàËÆ£¬Ò²ÊÇÓÃÀ´´æ´¢×Ö·ûÀàÐ͵ÄÊý¾Ý£¬²»¹ýÆä´æ´¢µÄÊÇUnicode×Ö·û¼¯µÄ×Ö·ûÊý¾Ý¡£Í¬Ñù£¬ÔÚÕâ¸öÊý¾ÝÀàÐÍÖУ¬Ò²¿ÉÒÔ´æ´¢¶à´ï4GBÈÝÁ¿µÄÊýÁ¿£¬¶øÇÒÔÚ¶¨ÒåÊý¾ÝÀàÐÍʱ²»ÐèÒªÖ¸¶¨³¤¶È£¬Êý¾Ý¿â»á×Ô¶¯¸ù¾Ý´æ´¢µÄÄÚÈÝÀ´½øÐе÷½Ú¡£
¡¡¡¡ËÄÊÇBFILEÊý¾ÝÀàÐÍ¡£¿´¿´Ãû×Ö¾ÍÖªµÀ¸úÆäËûµÄLOBÊý¾ÝÀ ......