[ת] proc oracle Á¬½ÓÊͷŲ»Á˵ÄÎÊÌâ
ת×Ô£ºhttp://www.91linux.com/html/article/database/oracle/20081205/14333.html
proc oracle Á¬½ÓÊͷŲ»Á˵ÄÎÊÌâ
±ÊÕß¹«Ë¾µÄÓ¦ÓÃϵͳÿ¸ôÒ»¶Îʱ¼ä£¬oracleÁ¬½Ó¾Í´ïµ½ÉÏÏÞÁË£»»³ÒÉÊÇÓ¦ÓÃûÓÐÕýÈ·µÄÊÍ·ÅoracleÁ¬½Ó£»ËµÀ´²ÑÀ¢£¬proc¶Ï¶ÏÐøÐøµÄÓÃÁ˼¸Ä꣬¿É
ÄÜÊÇÒÔǰ¹«Ë¾µÄ´úÂëдµÃÌ«ºÃÁË£¬´ÓûÓÐÈ¥¹ØÐÄ»ù±¾µÄprocÁ¬½Ó¡¢ÊÍ·ÅÊÇÔõô´¦ÀíµÄ£¬ÕâÎÊÌâ±ÆµÃÎÒµÃÈ¥ÊìϤÕâ·½ÃæµÄ¶«Î÷ÁË£»ÅªÁËÁ½Ìì²ÅÕÒµ½ÎÊÌâµÄ¸ùÔ´£¬Æä
Öдó°ëʱ¼äÊÇÊìϤÔϵͳµÄ´úÂë¡¢¶¨Î»ÎÊÌ⣬ÆäËûʱ¼äÊÇÕÒÍøÉϵÄ×ÊÁÏ¿´¡¢×öÏà¹ØµÄ²âÊÔ£»
¾¹ý·ÖÎö£¬½«ÎÊÌⶨλÔÚÁËÊý¾Ý¿â´ò¿ª¡¢¹Ø±ÕµÄÏà¹Øº¯Êý£»ºǫ́c++Ó¦Óõĸù±¾Ã»Óгɹ¦µÄÊÍ·Åoracle Á¬½Ó£¬Êý¾Ý¿â²Ù×÷º¯ÊýÈçÏ£º
sql_context db_open(const char* usr, const char* pwd)
{
EXEC SQL BEGIN DECLARE SECTION;
sql_context ctx;
char username[64];
char passwd[64];
EXEC SQL END DECLARE SECTION;
struct sqlca sqlca;
EXEC SQL ENABLE THREADS;
EXEC SQL CONTEXT ALLOCATE :ctx;
EXEC SQL CONTEXT USE :ctx;
strcpy(username,usr);
strcpy(passwd,pwd);
EXEC SQL CONNECT :username IDENTIFIED BY :passwd;
if (sqlca.sqlcode)
{
printf( "Á¬½ÓoracleÊý¾Ý¿âʧ°Ü!");
return NULL;
}
return ctx;
}
int db_close(sql_context ctx)
{
struct sqlca sqlca;
EXEC SQL CONTEXT FREE :ctx;
if( SQLCODE != 0 )
{
printf( "¶Ï¿ªÊý¾Ý¿âÁ¬½Óʧ°Ü!%d:%s\n",SQLCODE,sqlca.sqlerrm.sqlerrmc );
return -1;
}
return 0;
}
¾¹ý²âÊÔ£¬·¢ÏÖÒÔÉÏdb_close¸ù±¾Ã»ÓÐÊÍ·ÅÊý¾Ý¿âÁ¬½Ó£»¾¹ýºÍÍøÉÏʾ·¶³ÌÐòµÄ¶Ô±È£¬ÖÕÓÚ·¢ÏÖÁËÎÊÌ⣺
Ô
À´oracle µÄsql context£¬ÐèÒª releaseÖ®ºó£¬²ÅÄÜÕýÈ·ÊÍ·ÅÊý¾Ý¿âÁ¬½Ó£»Èç¹û²»×örelease£¬free
context²»»á±¨ÈκδíÎ󣨼´db_closeÖв¢²»·µ»Ø-1£©£¬µ«ÊÇÊý¾Ý¿âÁ¬½ÓÈ´²»»áÊÍ·Å£¨¶ÔoracleµÄÕâ¸ö´¦Àí»úÖÆ£¬º¹Ò»¸ö-_-|||£¬»ò
Õß˵Ã÷ÎÒµÄproc±È½ÏÈõ°É£¬¿ÉÄÜ»¹ÓбðµÄ½â¾ö°ì·¨£©£»
°Ñdb_close¸Ä³ÉÈçÏ£¬ÎÊÌâ½â¾ö£º
int db_close(sql_context ctx)
{
struct sqlca sqlca;
EXEC SQL CONTEXT USE :ctx;
EXEC SQL COMMIT WORK RELEASE;
EXEC SQL CONTEXT FREE :ctx;
if( SQLCODE != 0 )
{
printf( "¶Ï¿ªÊý¾Ý¿âÁ¬½Óʧ°Ü!%d:%s\n",SQLCODE,sqlca.sqlerrm.sqlerrmc );
return -1;
}
return 0;
}
×¢Òâ
Ïà¹ØÎĵµ£º
ѧϰOracle DBAÒ²°ë¸ö¶àѧÆÚÁË£¬½ñÌìÃÍÈ»²Å·¢ÏÖ£¬ÔÀ´ÎÒµÄÊ黹ÊǺÜеģ¬ÉϿβÙ×÷ʱºòÒ²Ö»ÊÇÖªµÀ´ó¸ÅÔõô×ö£¬µ«ÊÇÒªÕæµÄÈ«²¿×Ô¼º×ö£¬¶ø²»È¥·Ê黹ÊÇÓÐÒ»¶¨µÄÄѶȵģ¬ËùÒÔÄØ£¬½ñÌ쿪ʼ½«DBA´ÓÍ·¸´Ï°Ò»±é£¬Í¬Ê±ÔÙ²Ù×÷Ò»±é¡£
µÚÒ»Õ£¬Ñ§µÄÊÇOracleµÄÌåϵ½á¹¹£ ......
ORACLE SQLÐÔÄÜÓÅ»¯ÏµÁÐ
1. ·ÃÎÊTableµÄ·½Ê½
ORACLE ²ÉÓÃÁ½ÖÖ·ÃÎʱíÖмǼµÄ·½Ê½:
a. È«±íɨÃè
È«±íɨÃè¾ÍÊÇ˳ÐòµØ·ÃÎʱíÖÐÿÌõ¼Ç¼. ORACLE²ÉÓÃÒ»´Î¶ÁÈë¶à¸öÊý¾Ý¿é(database block)µÄ·½Ê½ÓÅ»¯È«±íɨÃè.
b. ͨ¹ýROWID·ÃÎʱí
Äã¿ÉÒÔ²ÉÓûùÓÚROWIDµÄ·ÃÎÊ·½Ê½Çé¿ö,Ìá¸ß·ÃÎʱíµÄЧÂÊ, , ROWID°üº¬Á˱íÖмǼµ ......
½ñÌìÔÚһ̨2003serverÉϰ²×° 9i¿Í»§¶Ë¡£
ÅäÖÃÁËtnsÖ®ºóÁ¬½Ó£¬±¨´í "ORA-06413 Á¬½Óδ´ò¿ª´íÎó".
°ÑÆäËü·þÎñÆ÷µÄtnsname.oraÖ±½Ó¿½±´¹ýÀ´Ò²²»ÐС£
ºóÀ´²éÁËÒ»ÏÂ×ÊÁÏ£¬ËµÓ¦ÓóÌÐò·¾¶Àï±ßÓÐÌØÊâ×Ö·û¡£
Õâ²Å»ÐÈ»´óÎò£¬Á½ÄêǰÕâ¸öÎÊÌâÒѾÕÛÄ¥¹ýÎÒÒ»´ÎÁË£¬ÄÔ×Ó²»ºÃ£¬¾¹È»¸øÍüÁË¡£
ÔÒò¾ÍÊÇ64λϵͳ»·¾³Ï°²×°oracle£¬oralc ......
declare
sqlstring varchar2(100);
emprow emp_bak%rowtype;
myno emp_bak.empno%type;
begin
--sqlstring:='create table emp_bak as select * from emp';
sqlstring:='select * from emp_bak where empno=:myno and sal>:mysal';
myno:='&ÇëÊäÈëÔ±¹¤±àºÅ';
--¶¯Ì¬SQ ......
×÷ÕߣºÒ×ÎÄ¿¡
ÓÊÏ䣺yiwenjun@126.com
Ê×ÏÈÒª°ÑOracle µÄ¼àÌýºÍ·þÎñÁ½Ïî´ò¿ª
´ò¿ªodbcÊý¾ÝÔ´ÅäÖýçÃæ,Ñ¡ÔñϵͳDSN£¬Ìí¼Ó£¬Ñ¡ÔñOracleÇý¶¯³ÌÐò
¹Ø¼üÊÇÏÂÃæ²ÎÊýµÄÉèÖÃ
Data source name:×Ô¼ºÎª¸ÃÊý¾ÝÔ´ÃüµÄÃû
description:Ëæ±ã×Ô¼ºÃèÊöÀ²
TNS server name:ÏÂÀ²Ëµ¥ÓУ¨Èç¹ûûÓеϰ£¬¾Í×Ô¼ºÔÚnet configuration assist ......