Error processing request

Parameters

CONTENT_LENGTH0
REQUEST_METHODGET
REQUEST_URI/revision/Oratcl?V=62
QUERY_STRINGV=62
CONTENT_TYPE
DOCUMENT_URI/revision/Oratcl
DOCUMENT_ROOT/var/www/nikit/nikit/nginx/../docroot
SCGI1
SERVER_PROTOCOLHTTP/1.1
HTTPSon
REMOTE_ADDR172.70.126.34
REMOTE_PORT15618
SERVER_PORT4443
SERVER_NAMEwiki.tcl-lang.org
HTTP_HOSTwiki.tcl-lang.org
HTTP_CONNECTIONKeep-Alive
HTTP_ACCEPT_ENCODINGgzip, br
HTTP_X_FORWARDED_FOR18.221.85.142
HTTP_CF_RAY884ff5b4d8f62a60-ORD
HTTP_X_FORWARDED_PROTOhttps
HTTP_CF_VISITOR{"scheme":"https"}
HTTP_ACCEPT*/*
HTTP_USER_AGENTMozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
HTTP_REFERERhttp://tcl.wiki/revision/Oratcl?V=62
HTTP_CF_CONNECTING_IP18.221.85.142
HTTP_CDN_LOOPcloudflare
HTTP_CF_IPCOUNTRYUS

Body


Error

Unknow state transition: LINE -> END

-code

1

-level

0

-errorstack

INNER {returnImm {Unknow state transition: LINE -> END} {}} CALL {my render_wikit Oratcl **INTRO**\nPurpose:\ Discuss\ the\ Tcl\ <->\ Oracle\ DBMS\ binding\n===\nWhat:\ Oracle\ extension\ to\ Tcl\nWhere:\ http://oratcl.sf.net/\n\ \ \ \ \ \ \ \ http://sf.net/projects/oratcl/\n\ \ \ \ \ \ \ \ ftp://tcl.activestate.com/pub/tcl/nightly-cvs/\n\ \ \ \ \ \ \ \ http://www.oracle.com/technology/software/products/database/oracle10g/index.html\n\ \ \ \ \ \ \ \ ftp://ftp.tcl.tk/pub/tcl/mirror/ftp.procplace.com/sorted/packages-7.6/databases/oratcl-2.5/oratcl-2.5.tar.gz\nftp://ftp.tcl.tk/pub/tcl/mirror/ftp.procplace.com/sorted/packages-8.0/distrib/cvs-oratcl.tar.gz\n\ \ \ \ \ \ \ \ http://people.a2000.nl/hkooiman/Oratcl\n\ \ \ \ \ \ \ \ http://technet.oracle.com/\n\ Description:\ \n\ \ \ \ \ \ \ \ The\ Oratcl\ package\ is\ a\ dynamic\ extension\ of\ the\ Tcl\ language\ that\ integrates\ Oracle\ OCI\ \n\ \ \ \ \ \ \ \ calls\ into\ a\ set\ of\ Tcl\ commands\ that\ allow\ Oracle\ access\ via\ Tcl.\ \n\n\ \ \ \ \ \ \ \ Starting\ in\ May\ 2000,\ Todd\ Helfter\ became\ the\ new\ maintainer\ of\ the\ Oratcl\ package.\ Currently\ \n\ \ \ \ \ \ \ \ two\ versions\ of\ Oratcl\ are\ supported.\ Oratcl\ 4\ for\ use\ with\ Oracle\ 8i,\ 9i\ and\ 10g,\ and\ the\ older\ \n\ \ \ \ \ \ \ \ Oratcl\ 3\ for\ use\ with\ Oracle\ 7\ and\ 8.0.x.\ \n\n\ \ \ \ \ \ \ \ Please\ visit\ the\ project\ page\ for\ feature\ requests,\ bug\ reports\ and\ general\ help\ requests.\n\n\ \ \ \ \ \ \ \ Currently\ the\ version\ is:\ 4.5\n\n\ Updated:\ Oct\ 23,\ 2009\n\ Contact:\ See\ the\ sf.net\ web\ site\n\n\nThere\ is\ now\ a\ nice\ manual\ \[http://master.dl.sourceforge.net/sourceforge/oratcl/OraTcl_Users_Guide_and_Reference.pdf\]\ on\ using\ Oratcl.\ Thanks\ Todd!\n\n----\n**Oratcl\ Tips**\n\nInsert\ your\ favorite\ Oratcl\ tips,\ tricks,\ and\ hints,\ etc.\ here.\nAlso,\ point\ to\ various\ useful\ reading,\ such\ as\ \[BOOK\ Tcl/Tk\ Tools\],\nor\ \[BOOK\ Oracle\ and\ Open\ Source\].\n\n\"Cinderella\ languages\"\ \[http://sunsite.uakom.sk/sunworldonline/swol-08-1999/swol-08-regex.html\]\nis\ a\ published\ article\ on\ Oratcl's\ origins.\ ''(\[escargo\]\ -\ replaced\ link\ as\ of\ 8\ Nov\ 2006)''\n\n\[Tom\ Poindexter\]\ created\ Oratcl.\ \ \[Todd\ M.\ Helfter\]\ currently\ maintains\ it.\nTom\ Poindexter's\ Oratcl\ page\ http://www.nyx.net/~tpoindex/tcl.html\ has\na\ little\ bit\ about\ Oratcl,\ but\ the\ primary\ work\ on\ the\ extension\ is\ being\ndone\ by\ Todd\ via\ the\ \[SourceForge\]\ project.\ (''\[escargo\]\ 10\ Jan\ 2007''\ -\nThe\ tcl.html\ file\ referenced\ dates\ from\ the\ previous\ century....)\n\n\n\[VAD\],\ \[nstcl\]\ are\ tools\ that\ know\ about\ oratcl.\n\n----\n\n**Oratcl\ binary\ data\ tips**\n\nAlso\ add\ here\ information\ about\ tips\ for\ managing\ \[Unicode\],\ images,\ etc.\ from\ within\ Oracle\ tables.\n\nOne\ thing\ that\ was\ discovered\ is\ that\ one\ needs\ to\ set\ something\ called\ the\ NLS\ before\ starting\ oracle\ and\ attempting\ to\ deal\ with\ UTF-8\ data.\nThis\ can\ be\ done\ using\ the\ NLS_LANG\ environment\ variable,\ or\ using\ something\ like\ SQLPLUS's\n'''alter\ session\ set\ nls_territory'''\ and\ '''alter\ session\ set\ nls_language''\nto\ appropriate\ values.\n\nApparently,\ as\ long\ as\ NLS_LANG\ is\ set\ to\ some\ valid\ language,\ oracle\ then\nhandles\ a\ localization\ sweep\ over\ the\ data\ properly\ before\ handing\ the\ data\nback\ to\ the\ requestor.\ \ Then,\ you\ do\ a\ call\ to\n\ \ \ \ \ \ \ \ encoding\ convertfrom\ utf-8\ \$string\n\nand\ off\ you\ go.\n\n\n\n----\n\n**Oratcl\ dependance\ on\ Oracle**\n\nTodd\ points\ out\ that,\ \"OraTcl\ relies\ on\ the\ Oracle\ install.\ \ This\ means\ different\ things\ on\ different\ platforms.\n\nOn\ Unix,\ the\ ORACLE_HOME\ environment\ variable\ must\ point\ to\ a\ valid\ Oracle\ninstall.\n\nOn\ windows,\ the\ ociw32.lib\ file\ must\ be\ found\ in\ the\ WINDOWS\ search\ path.\nIn\ the\ past,\ I\ have\ had\ to\ place\ the\ oracle\ directory\ in\ the\ windows\ PATH\nvariable\ in\ autoexec.bat.\ \ In\ later\ releases,\ the\ registry\ information\ was\nsufficient\ to\ find\ the\ file.\"\n\n----\n\n**Installing\ Oratcl\ on\ Windows**\n\n''Laurent\ Riesterer,\ 2005/9/23''\ The\ easiest\ way\ to\ install\ the\ required\ library\ (tested\ on\ Windows)\ is\ to\ use\ the\ \"Oracle\ Instant\ Client\"\ setup.\ You\ just\ need\ to\ unzip\ the\ content\ of\ one\ file\ in\ a\ folder\ (about\ 80\ MB),\ add\ this\ folder\ to\ you\ path\ and\ then\ you\ can\ start\ to\ use\ \[Oratcl\].\ You\ don't\ need\ any\ configuration\ file,\ just\ use\ a\ fully\ qualified\ name\ in\ your\ connection\ string:\n\n\ user/password@//my.oracle.server:port/my.database.service\n\n----\n\nTcl\ has\ other\ connections\ to\ \[COMPANY:\ Oracle\].\n\n\n----\n\n**Oratcl\ programming\ style\ question**\n\n\[LV\]\ For\ which\ version\ of\ Oratcl\ is\ this\ template\ -\ I\ seem\ to\ recall\ that\nat\ version\ changes,\ the\ paradigm\ used\ by\ oratcl\ programs\ had\ to\ change...\n\nA\ recent\ article\ on\ comp.lang.tcl\ by\ \[Kevin\ Rodgers\]\ asked\ for\ncomments\ about\ this\ sample\ boilerplate:\n\n\ #\ For\ error\ reporting:\n\ set\ program\ \[file\ tail\ \$argv0\]\n\n\ #\ Package\ interface:\n\ package\ require\ Oratcl\n\n\ #\ Connect\ to\ the\ \$env(TWO_TASK)\ database\ as\ USER\ with\ PASSWORD:\n\ if\ \[catch\ \{oralogon\ \"USER/PASSWORD\"\}\ ora_logon\]\ \{\n\ \ \ \ puts\ stderr\ \"\$program:\ \$ora_logon\"\n\ \ \ \ exit\ 1\n\ \}\n\ if\ \[catch\ \{oraopen\ \$ora_logon\}\ ora_statement\]\ \{\n\ \ \ \ oralogoff\ \$ora_logon\n\ \ \ \ puts\ stderr\ \"\$program:\ \$ora_statement\"\n\ \ \ \ exit\ 1\n\ \}\n\ #if\ \[catch\ \{oraconfig\ \$ora_statement\ fetchrows\ 1024\}\ ora_error\]\ \{\n\ #\ \ \ \ puts\ stderr\ \"\$program:\ \$ora_error\"\n\ #\}\n\n\ #\ Execute\ SQL\ statement:\n\ set\ sql\ \"SELECT\ column_1,\ ...\ column_N\ FROM\ ...\ WHERE\ ...\"\n\ #\ Note\ that\ for\ Oratcl\ 4.x,\ the\ \$oramsg\ references\ have\ to\ change\ to\n\ #\ \[oramsg\ \$ora_statement\ rc\]\n\ if\ \[catch\ \{orasql\ \$ora_statement\ \$sql\}\ ora_error\]\ \{\n\ \ \ \ puts\ stderr\ \"\$program:\ \$ora_error\"\n\ \}\ elseif\ \{\$oramsg(rc)\ !=\ 0\}\ \{\n\ \ \ \ puts\ stderr\ \"\$program:\ \$oramsg(errortxt)\"\n\ \}\ else\ \{\n\ \ \ \ #\ Process\ each\ row\ with\ column_I\ bound\ to\ var_I:\n\ \ \ \ while\ \{\$oramsg(rc)\ ==\ 0\}\ \{\n\ \ \ \ \ \ \ \ if\ \[catch\ \{orafetch\ \$ora_statement\ \\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{...\ \$var_1\ ...\ \$var_N\ ...\}\ \\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ '@'\ var_1\ 1\ ...\ var_N\ N\}\ \\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ora_error\]\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ puts\ stderr\ \"\$program:\ \$ora_error\"\n\ \ \ \ \ \ \ \ \ \ \ \ break\n\ \ \ \ \ \ \ \ \}\ elseif\ \{\$oramsg(rc)\ ==\ 1403\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ break\n\ \ \ \ \ \ \ \ \}\ elseif\ \{\$oramsg(rc)\ !=\ 0\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ puts\ stderr\ \"\$program:\ \$oramsg(errortxt)\"\n\ \ \ \ \ \ \ \ \ \ \ \ break\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \}\n\ \}\n\n\ #\ Disconnect\ from\ the\ \$env(TWO_TASK)\ database:\n\ if\ \[catch\ \{oraclose\ \$ora_statement\ ora_error\]\ \{\n\ \ \ \ puts\ stderr\ \"\$program:\ \$ora_error\"\n\ \}\n\ if\ \[catch\ \{oralogoff\ \$ora_logon\ ora_error\]\ \{\n\ \ \ \ puts\ stderr\ \"\$program:\ \$ora_error\"\n\ \}\n\n----\n\n**Intro\ to\ Oratcl\ reference**\n\nSee\ also\ http://www.dbcorp.com/downloads/ORATCL.ppt\ for\ an\ intro\ to\ Oratcl\ (and\ Oracle's\ OEM)\ from\ 2000.\n\nAddition\ of\ pointers\ to\ other\ Oratcl\ tutorials\ -\ particular\ current\ ones\ -\ would\nbe\ greatly\ appreciated.\n\n\[RLH\]:\ I\ would\ like\ to\ second\ the\ request\ for\ tutorials\ and\ example\ pointers.\ I\ am\ new\ to\ Tcl\ and\ while\ I\ can\ use\ Perl/DBI\ to\ do\ what\ I\ want,\ I\ would\ rather\ use\ Tcl.\ \ :-)\n----\n\n\n\[elfring\]\ ''27\ Aug\ 2003''\ The\ package\ \"\[nstcl\]-database\"\ \[http://nstcl.sourceforge.net/\]\ uses\ a\ database\ driver\ for\ \[Oracle\].\n\n\n\n----\n\n**Installing\ Oratcl\ on\ MacOS\ X**\n\n\[Kroc\]\ -\ 18\ Oct.\ 2006\ :\n\nOraTcl\ relies\ on\ the\ Oracle\ install\ but\ that's\ not\ so\ easy\ to\ install\ Oracle\ client\ on\ Mac\ OS\ X.\ Here\ are\ the\ steps\ I\ followed\ to\ get\ something\ that\ works:\n\n'''1)\ Download\ Oracle\ client\ 8.1.7:'''\n\nThe\ file\ to\ get\ is\ '''Oracle\ 8i\ v8.1.7.1\ OCI\ /\ Mac\ OS\ X'''\ from\ this\ page:\ http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/macsoft.html\ (you\ must\ register\ to\ get\ it\ but\ it's\ free).\n\nUncompress\ '''MacOSX_8171.cpio'''\ and\ you'll\ get\ 3\ files:\ MacOSX_8.1.7.1_OCI_Demo.zip,\ Oracle_8.1.7.1_Client.zip\ et\ Release_Notes.zip.\n\n'''2)\ Client\ installation:'''\n\nUncompress\ Oracle_8.1.7.1_Client.zip\ then\ move\ '''Oracle_8.1.7.1_Client'''\ directory\ in\ your\ home.\n\nThen\ you\ must\ edit\ '''~/Oracle_8.1.7.1_Client/network/admin/tnsnames.ora'''\ to\ fit\ your\ server\ parameters.\ At\ the\ end,\ it\ should\ be\ something\ like\ this:\n\n\ MYBASE\ =\n\ \ \ \ \ (DESCRIPTION\ =\n\ \ \ \ \ \ \ \ \ (ADDRESS_LIST\ =\n\ \ \ \ \ \ \ \ \ \ \ \ \ (ADDRESS\ =\ (PROTOCOL\ =\ TCP)(HOST\ =\ 192.168.1.119)(PORT\ =\ 1521))\n\ \ \ \ \ \ \ \ \ )\n\ \ \ \ \ (CONNECT_DATA\ =\n\ \ \ \ \ \ \ \ \ (SID\ =\ MYBASE)\n\ \ \ \ \ )\n\ )\n\n'''3)\ Environment\ variable:'''\n\nAt\ least\ one\ environment\ variable,\ '''ORACLE_HOME''',\ must\ be\ set\ before\ loading\ \[OraTcl\]:\n\n\ set\ ::env(ORACLE_HOME)\ \[file\ normalize\ ~/Oracle_8.1.7.1_Client\]\n\nTested\ on\ Mac\ OS\ X\ 10.4.8\ with\ OraTcl\ 4.4\n\n----\n**Oracle\ 10\ and\ OraTcl**\n\nNote\ that\ Oracle\ 10\ brings,\ at\ least\ on\ some\ platforms,\ another\ wrinkle.\nFor\ me,\ on\ a\ SPARC\ Solaris\ 9\ system,\ Oracle\ 10\ defaults\ to\ 64\ bit\ libraries.\nIf\ you\ are\ using\ \[ActiveTcl\]\ or\ something\ similar,\ you\ will\ find\ that\noratcl\ was\ compiled\ as\ a\ 32\ bit\ interface.\ This\ means\ that\ you\ need\ to\nuse\ the\ environment\ varirable:\n======\n#\ For\ 32\ bit\ tcl\ on\ 64\ bit\ solaris\ with\ 64\ bit\ oracle.\nexport\ ORACLE_LIBRARY=\$ORACLE_HOME/lib32/libclntsh.so\n======\n\nso\ that\ oratcl\ can\ be\ loaded.\nThis\ is\ '''not'''\ a\ bug\ in\ oratcl.\ It\ is\ the\ mechanism\ that\ Oracle\ provides\nfor\ someone\ to\ use\ the\ 32\ bit\ libraries.\ You\ just\ need\ to\ know\ whether\nyou\ are\ using\ a\ 32\ bit\ or\ a\ 64\ bit\ tcl\ so\ that\ you\ get\ the\ correct\ shared\nlibraries.\n\n----\n**Oratcl\ tool\ sought**\n\nHas\ anyone\ written\ a\ Tcl/Tk\ tool\ that\ provides\ one\ with\ the\ ability\ to\ browse\ (and\ perhaps\ update)\ oracle\ table\ data?\n\n\[osalcescu\]\ -\ 2008-06-24\ -\ please\ check\ Tom's\ wisqlite\ application,\ it\ may\ be\ what\ you're\ looking\ for.\ http://www.nyx.net/~tpoindex/wisqlite.html\n\nThe\ graphic\ is\ interesting.\ I\ didn't\ see\ the\ code\ there,\ so\ I\ don't\ know\ how\ it\ works\ in\ general.\nLooking\ on\ this\ wiki,\ I\ only\ see\ references\ to\ it\ being\ related\ to\ \[sybtcl\].\ Looking\ in\ the\ sybtcl\ and\ oratcl\ code\ distributions,\ I\ see\ the\ code\ in\ the\ sybtcl\ distribution,\ but\ I\ don't\ see\ a\ comparable\ version\ for\ oratcl.\ The\ code\ distributed\ with\ sybtcl\ is\ very\ sybase\ specific\ -\ it\ isn't\ a\ matter\ of\ just\ changing\ the\ package\ require\ statement.\ \ I\ could\ probably\ go\ through\ and\ rewrite\ it\ to\ work\ with\ oratcl,\ but\ right\ now\ I\ don't\ have\ the\ available\ time\ to\ do\ that.\ Thanks\ for\ the\ pointer\ though.\n\n''\[escargo\]''\ -\ The\ link\ for\ wisqlite\ does\ not\ show\ how\ to\ get\ the\ application,\ plus\ the\ page\ claims\ to\ have\ last\ been\ revised\nin\ 1995.\ Tom's\ home\ page\ there\ \[http://www.nyx.net/~tpoindex/\]\ says\ it\ was\ last\ revised\ in\ 1999,\ and\ has\ no\ link\ to\ wisqlite.\n\n\[aec\]\ -\ 2008-06-25\ -\ I\ found\ an\ old\ distribution\ of\ oratcl\ which\ contains\ oddis\ and\ wosql\ in\ the\ examples\ subdirectory\ which\ may\ be\ what\ you\ are\ seeking.\ \ Goto\ ftp://tcl.activestate.com/pub/tcl/mirror/ftp.procplace.com/sorted/databases/oratcl-2.5/index.html\ and\ get\ the\ oratcl-2.5.tar.gz\ archive\ file.\n\n\[LV\]\ Thanks.\ With\ that\ name,\ I\ was\ able\ to\ track\ down\ a\ copy.\ I\ actually\ found\ a\ development\ branch\ of\ oratcl\ 2.7\ which\ still\ had\ a\ version\ of\ wosql\ in\ it.\ I\ wonder\ whether\ anyone\ has\ done\ anything\ with\ it\ in\ the\ past\ few\ years.\n\n\[osalcescu\]\ -\ 2008-06-26\ -\ Well,\ I\ did\ develop,\ some\ time\ ago,\ a\ more\ basic\ utility.\ Nothing\ that\ fancy.\ If\ you're\ interested\ I\ can\ pass\ you\ the\ code,\ could\ be\ your\ start-up\ coding\ boost.\ Or\ not...\ :)\ Leave\ an\ email\ address\ here\ if\ you're\ interested.\n\n''\[escargo\]''\ -\ Aren't\ there\ ''two''\ programs\ mentioned\ here,\ which\ are\ distinct:\ '''wisqlite'''\ (for\ which\ no\ source\ has\ been\ identified),\nand\ '''wosql''',\ which\ has\ been\ found\ again?\ \ Based\ on\ the\ name,\ I\ would\ have\ thought\ that\ wisqlite\ was\ a\ client\ \[SQLite\],\ nor\ Oracle.\n\n\[LV\]\ wisqlite\ is\ unrelated\ to\ Oratcl.\ It\ was,\ in\ fact,\ created\ before\ SQLite\ was\ created!\ The\ name\ is,\ I\ suspect,\ a\ play\ on\ the\ idea\ of\ a\ light\ weight\ \"w\"indowing\ \"sq\"\ \"lite\"\ weight\ program,\ probably\ designed\ more\ for\ conveying\ the\ idea\ of\ what\ someone\ could\ do\ rather\ than\ intended\ to\ be\ a\ full\ fledged\ production\ quality\ application.\ Tom\ provided,\ as\ a\ part\ of\ the\ sybtcl\ distribution,\ the\ original\ application.\ When\ I\ went\ looking\ for\ wosql,\ on\ some\ web\ site\ I\ ran\ across\ a\ note\ that\ implied\ that\ code\ was\ basically\ a\ \[port\]\ of\ wisqlite\ to\ oratcl,\ and\ thus\ the\ name\ \"w\"indowing\ \"o\"racle\ \"sql\"\ wosql.\n\[TP\]\ LV\ is\ pretty\ much\ correct\ concerning\ the\ naming\ wisqlite\ and\ wosql.\ \ Sybase's\ command\ line\ utility\ was/is\ called\n''isql'',\ and\ Sybase\ had\ a\ Windows\ version\ called\ ''wisql''.\ \ I\ thought\ my\ tool\ for\ Sybtcl\ was\ lighter\ and\ simpler,\ thus\nthe\ name\ ''wisqlite''.\n\n\[LV\]\ Note\ that\ wosql's\ history\ comments\ seem\ to\ indicate\ that\ the\ last\ release\ was\ back\ in\ the\ mid\ to\ late\ 1990s.\nIf\ you\ don't\ have\ older\ oratcl's\ installed\ on\ your\ system,\ you\ may\ find\ problems.\ If\ you\ do\ have\ older\ ones,\ you\ will\ have\ to\ experiment\ with\ versions\ to\ find\ out\ which\ one\ is\ the\ one\ you\ need.\n\n----\n**Note\ about\ orafetch**\n\[LV\]\ 2008\ Nov\ 17\nIn\ moving\ from\ oratcl\ 4.2\ to\ 4.4,\ I\ noticed\ a\ difference\ in\ behavior\ in\ one\ of\ my\ programs.\ Turns\ out\ that\ in\ my\ program\ I\ used:\n\n===\norafetch\ ...\ -command\ \{\ name\ \}\n===\n\nIn\ my\ program,\ the\ '''name'''\ proc\ returned\ without\ specifying\ an\ argument.\ In\ oratcl\ 4.2,\ the\ program\ worked\ fine.\ In\ oratcl\ 4.4,\ the\ return\ code\ from\ orafetch\ appears\ to\ have\ become\ the\ return\ value\ from\ '''name'''.\ I\ changed\ '''name'''\ to\ return\ 0\ instead\ of\ nothing,\ and\ my\ program\ worked\ again.\n\nIn\ my\ case,\ this\ was\ a\ better\ coding\ style\ anyways,\ so\ it\ worked\ out\ well.\ Just\ wanted\ to\ be\ certain\ that\ anyone\ else\ encountering\ peculiar\ behavior\ thinks\ of\ this.\n\n----\n\[LV\]\ 2009-Jan-21\nI\ have\ a\ situation\ for\ which\ I'm\ looking\ for\ a\ solution.\n\nI\ have\ two\ data\ sources\ -\ one,\ a\ flat\ text\ file,\ containing\ deliminated\nfields\ of\ information.\ The\ first\ field\ is\ an\ item\ identifier.\n\nThe\ second\ data\ source\ is\ an\ oracle\ table,\ where\ each\ column\ corresponds\nto\ the\ fields\ from\ the\ flat\ file\ and\ the\ rows\ should\ correspond\ to\ each\nline.\n\nWhat\ I\ am\ wanting\ to\ end\ up\ with\ is\ a\ program\ that\ reports\ items\ from\ the\nflat\ file\ that\ are\ not\ found\ in\ the\ table,\ and\ items\ in\ the\ table\ which\nare\ not\ found\ in\ the\ flat\ file.\n\nI\ supposed\ I\ could\ dynamically\ generate\ a\ select\ statement\ with\ a\nwhere\ col_name\ not\ in\ (val1,\ val2,\ ....,\ val2000)\ type\ statement,\ but\nI\ was\ wondering\ if\ anyone\ had\ other\ ideas\ of\ ways\ to\ approach\ the\nsituation.\n\nHarm\ Olthof\ -\ 2009-Jan-22\nThere\ are\ quite\ a\ few\ solutions\ from\ the\ Oracle\ side.\ \n(1)\ you\ can\ import\ the\ flat\ file\ into\ your\ database,\ using\ sqlloader\;\n(2)\ From\ Oracle\ version\ 9.x\ and\ higher\ you\ can\ also\ link\ it,\ using\ the\ concept\ of\ \"External\ Tables\"\;\n(3)\ Oracle\ also\ has\ a\ \[\[webdav\]\]\ solution,\ but\ this\ not\ generally\ made\ available\ by\ the\ dba-er.\ I\ think\ \[\[ftp\]\]\ is\ also\ possible\;\n(4)\ You\ could\ convert\ your\ flat\ file\ to\ xml\ and\ then\ there\ are\ more\ sophisticated\ possibilities\;\nAll\ of\ these\ possibilities\ expose\ the\ flat\ file\ as\ a\ table\ and\ then\ you\ can\ do\ a\ \"..where\ not\ exists..\"\ query.\nOracle\ has\ a\ kind\ of\ combination\ of\ our\ wiki\ and\ a\ newsgroup,\ run\ by\ Tom\ Kyte\ on:\ \[http://asktom.oracle.com\].\nIf\ you\ go\ there\ and\ search\ for\ things\ like\ \ sqlloader,\ external\ tables,\ csv,\ flat\ file\ etc.\ you'll\ find\ a\ lot\ of\ explanations\ and\ examples.\ No\ \[\[Tcl\]\]\ solution.\ It\ would\ be\ great\ if\ someone\ wrote\ a\ tcl\ Oracle\ Cartridge\ so\ we\ could\ use\ tcl\ instead\ of\ pl/sql.\n\n----\n**See\ also**\n\n\ \ \ *\ \[Programming\ Oracle\ stored-procedure\ cursors\]\n\ \ \ *\ \[oratcl\ examples\]\n\n\n\ \ \ *\ \[Oratcl\ Logon\ Dialog\]\n\n\n\ \ \ *\ \[Plotting\ data\]\n\n----\n!!!!!!\n%|\ \[Category\ Package\]\ |\ \[Category\ Database\]\ |%\n!!!!!! regexp2} CALL {my render Oratcl **INTRO**\nPurpose:\ Discuss\ the\ Tcl\ <->\ Oracle\ DBMS\ binding\n===\nWhat:\ Oracle\ extension\ to\ Tcl\nWhere:\ http://oratcl.sf.net/\n\ \ \ \ \ \ \ \ http://sf.net/projects/oratcl/\n\ \ \ \ \ \ \ \ ftp://tcl.activestate.com/pub/tcl/nightly-cvs/\n\ \ \ \ \ \ \ \ http://www.oracle.com/technology/software/products/database/oracle10g/index.html\n\ \ \ \ \ \ \ \ ftp://ftp.tcl.tk/pub/tcl/mirror/ftp.procplace.com/sorted/packages-7.6/databases/oratcl-2.5/oratcl-2.5.tar.gz\nftp://ftp.tcl.tk/pub/tcl/mirror/ftp.procplace.com/sorted/packages-8.0/distrib/cvs-oratcl.tar.gz\n\ \ \ \ \ \ \ \ http://people.a2000.nl/hkooiman/Oratcl\n\ \ \ \ \ \ \ \ http://technet.oracle.com/\n\ Description:\ \n\ \ \ \ \ \ \ \ The\ Oratcl\ package\ is\ a\ dynamic\ extension\ of\ the\ Tcl\ language\ that\ integrates\ Oracle\ OCI\ \n\ \ \ \ \ \ \ \ calls\ into\ a\ set\ of\ Tcl\ commands\ that\ allow\ Oracle\ access\ via\ Tcl.\ \n\n\ \ \ \ \ \ \ \ Starting\ in\ May\ 2000,\ Todd\ Helfter\ became\ the\ new\ maintainer\ of\ the\ Oratcl\ package.\ Currently\ \n\ \ \ \ \ \ \ \ two\ versions\ of\ Oratcl\ are\ supported.\ Oratcl\ 4\ for\ use\ with\ Oracle\ 8i,\ 9i\ and\ 10g,\ and\ the\ older\ \n\ \ \ \ \ \ \ \ Oratcl\ 3\ for\ use\ with\ Oracle\ 7\ and\ 8.0.x.\ \n\n\ \ \ \ \ \ \ \ Please\ visit\ the\ project\ page\ for\ feature\ requests,\ bug\ reports\ and\ general\ help\ requests.\n\n\ \ \ \ \ \ \ \ Currently\ the\ version\ is:\ 4.5\n\n\ Updated:\ Oct\ 23,\ 2009\n\ Contact:\ See\ the\ sf.net\ web\ site\n\n\nThere\ is\ now\ a\ nice\ manual\ \[http://master.dl.sourceforge.net/sourceforge/oratcl/OraTcl_Users_Guide_and_Reference.pdf\]\ on\ using\ Oratcl.\ Thanks\ Todd!\n\n----\n**Oratcl\ Tips**\n\nInsert\ your\ favorite\ Oratcl\ tips,\ tricks,\ and\ hints,\ etc.\ here.\nAlso,\ point\ to\ various\ useful\ reading,\ such\ as\ \[BOOK\ Tcl/Tk\ Tools\],\nor\ \[BOOK\ Oracle\ and\ Open\ Source\].\n\n\"Cinderella\ languages\"\ \[http://sunsite.uakom.sk/sunworldonline/swol-08-1999/swol-08-regex.html\]\nis\ a\ published\ article\ on\ Oratcl's\ origins.\ ''(\[escargo\]\ -\ replaced\ link\ as\ of\ 8\ Nov\ 2006)''\n\n\[Tom\ Poindexter\]\ created\ Oratcl.\ \ \[Todd\ M.\ Helfter\]\ currently\ maintains\ it.\nTom\ Poindexter's\ Oratcl\ page\ http://www.nyx.net/~tpoindex/tcl.html\ has\na\ little\ bit\ about\ Oratcl,\ but\ the\ primary\ work\ on\ the\ extension\ is\ being\ndone\ by\ Todd\ via\ the\ \[SourceForge\]\ project.\ (''\[escargo\]\ 10\ Jan\ 2007''\ -\nThe\ tcl.html\ file\ referenced\ dates\ from\ the\ previous\ century....)\n\n\n\[VAD\],\ \[nstcl\]\ are\ tools\ that\ know\ about\ oratcl.\n\n----\n\n**Oratcl\ binary\ data\ tips**\n\nAlso\ add\ here\ information\ about\ tips\ for\ managing\ \[Unicode\],\ images,\ etc.\ from\ within\ Oracle\ tables.\n\nOne\ thing\ that\ was\ discovered\ is\ that\ one\ needs\ to\ set\ something\ called\ the\ NLS\ before\ starting\ oracle\ and\ attempting\ to\ deal\ with\ UTF-8\ data.\nThis\ can\ be\ done\ using\ the\ NLS_LANG\ environment\ variable,\ or\ using\ something\ like\ SQLPLUS's\n'''alter\ session\ set\ nls_territory'''\ and\ '''alter\ session\ set\ nls_language''\nto\ appropriate\ values.\n\nApparently,\ as\ long\ as\ NLS_LANG\ is\ set\ to\ some\ valid\ language,\ oracle\ then\nhandles\ a\ localization\ sweep\ over\ the\ data\ properly\ before\ handing\ the\ data\nback\ to\ the\ requestor.\ \ Then,\ you\ do\ a\ call\ to\n\ \ \ \ \ \ \ \ encoding\ convertfrom\ utf-8\ \$string\n\nand\ off\ you\ go.\n\n\n\n----\n\n**Oratcl\ dependance\ on\ Oracle**\n\nTodd\ points\ out\ that,\ \"OraTcl\ relies\ on\ the\ Oracle\ install.\ \ This\ means\ different\ things\ on\ different\ platforms.\n\nOn\ Unix,\ the\ ORACLE_HOME\ environment\ variable\ must\ point\ to\ a\ valid\ Oracle\ninstall.\n\nOn\ windows,\ the\ ociw32.lib\ file\ must\ be\ found\ in\ the\ WINDOWS\ search\ path.\nIn\ the\ past,\ I\ have\ had\ to\ place\ the\ oracle\ directory\ in\ the\ windows\ PATH\nvariable\ in\ autoexec.bat.\ \ In\ later\ releases,\ the\ registry\ information\ was\nsufficient\ to\ find\ the\ file.\"\n\n----\n\n**Installing\ Oratcl\ on\ Windows**\n\n''Laurent\ Riesterer,\ 2005/9/23''\ The\ easiest\ way\ to\ install\ the\ required\ library\ (tested\ on\ Windows)\ is\ to\ use\ the\ \"Oracle\ Instant\ Client\"\ setup.\ You\ just\ need\ to\ unzip\ the\ content\ of\ one\ file\ in\ a\ folder\ (about\ 80\ MB),\ add\ this\ folder\ to\ you\ path\ and\ then\ you\ can\ start\ to\ use\ \[Oratcl\].\ You\ don't\ need\ any\ configuration\ file,\ just\ use\ a\ fully\ qualified\ name\ in\ your\ connection\ string:\n\n\ user/password@//my.oracle.server:port/my.database.service\n\n----\n\nTcl\ has\ other\ connections\ to\ \[COMPANY:\ Oracle\].\n\n\n----\n\n**Oratcl\ programming\ style\ question**\n\n\[LV\]\ For\ which\ version\ of\ Oratcl\ is\ this\ template\ -\ I\ seem\ to\ recall\ that\nat\ version\ changes,\ the\ paradigm\ used\ by\ oratcl\ programs\ had\ to\ change...\n\nA\ recent\ article\ on\ comp.lang.tcl\ by\ \[Kevin\ Rodgers\]\ asked\ for\ncomments\ about\ this\ sample\ boilerplate:\n\n\ #\ For\ error\ reporting:\n\ set\ program\ \[file\ tail\ \$argv0\]\n\n\ #\ Package\ interface:\n\ package\ require\ Oratcl\n\n\ #\ Connect\ to\ the\ \$env(TWO_TASK)\ database\ as\ USER\ with\ PASSWORD:\n\ if\ \[catch\ \{oralogon\ \"USER/PASSWORD\"\}\ ora_logon\]\ \{\n\ \ \ \ puts\ stderr\ \"\$program:\ \$ora_logon\"\n\ \ \ \ exit\ 1\n\ \}\n\ if\ \[catch\ \{oraopen\ \$ora_logon\}\ ora_statement\]\ \{\n\ \ \ \ oralogoff\ \$ora_logon\n\ \ \ \ puts\ stderr\ \"\$program:\ \$ora_statement\"\n\ \ \ \ exit\ 1\n\ \}\n\ #if\ \[catch\ \{oraconfig\ \$ora_statement\ fetchrows\ 1024\}\ ora_error\]\ \{\n\ #\ \ \ \ puts\ stderr\ \"\$program:\ \$ora_error\"\n\ #\}\n\n\ #\ Execute\ SQL\ statement:\n\ set\ sql\ \"SELECT\ column_1,\ ...\ column_N\ FROM\ ...\ WHERE\ ...\"\n\ #\ Note\ that\ for\ Oratcl\ 4.x,\ the\ \$oramsg\ references\ have\ to\ change\ to\n\ #\ \[oramsg\ \$ora_statement\ rc\]\n\ if\ \[catch\ \{orasql\ \$ora_statement\ \$sql\}\ ora_error\]\ \{\n\ \ \ \ puts\ stderr\ \"\$program:\ \$ora_error\"\n\ \}\ elseif\ \{\$oramsg(rc)\ !=\ 0\}\ \{\n\ \ \ \ puts\ stderr\ \"\$program:\ \$oramsg(errortxt)\"\n\ \}\ else\ \{\n\ \ \ \ #\ Process\ each\ row\ with\ column_I\ bound\ to\ var_I:\n\ \ \ \ while\ \{\$oramsg(rc)\ ==\ 0\}\ \{\n\ \ \ \ \ \ \ \ if\ \[catch\ \{orafetch\ \$ora_statement\ \\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{...\ \$var_1\ ...\ \$var_N\ ...\}\ \\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ '@'\ var_1\ 1\ ...\ var_N\ N\}\ \\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ora_error\]\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ puts\ stderr\ \"\$program:\ \$ora_error\"\n\ \ \ \ \ \ \ \ \ \ \ \ break\n\ \ \ \ \ \ \ \ \}\ elseif\ \{\$oramsg(rc)\ ==\ 1403\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ break\n\ \ \ \ \ \ \ \ \}\ elseif\ \{\$oramsg(rc)\ !=\ 0\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ puts\ stderr\ \"\$program:\ \$oramsg(errortxt)\"\n\ \ \ \ \ \ \ \ \ \ \ \ break\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \}\n\ \}\n\n\ #\ Disconnect\ from\ the\ \$env(TWO_TASK)\ database:\n\ if\ \[catch\ \{oraclose\ \$ora_statement\ ora_error\]\ \{\n\ \ \ \ puts\ stderr\ \"\$program:\ \$ora_error\"\n\ \}\n\ if\ \[catch\ \{oralogoff\ \$ora_logon\ ora_error\]\ \{\n\ \ \ \ puts\ stderr\ \"\$program:\ \$ora_error\"\n\ \}\n\n----\n\n**Intro\ to\ Oratcl\ reference**\n\nSee\ also\ http://www.dbcorp.com/downloads/ORATCL.ppt\ for\ an\ intro\ to\ Oratcl\ (and\ Oracle's\ OEM)\ from\ 2000.\n\nAddition\ of\ pointers\ to\ other\ Oratcl\ tutorials\ -\ particular\ current\ ones\ -\ would\nbe\ greatly\ appreciated.\n\n\[RLH\]:\ I\ would\ like\ to\ second\ the\ request\ for\ tutorials\ and\ example\ pointers.\ I\ am\ new\ to\ Tcl\ and\ while\ I\ can\ use\ Perl/DBI\ to\ do\ what\ I\ want,\ I\ would\ rather\ use\ Tcl.\ \ :-)\n----\n\n\n\[elfring\]\ ''27\ Aug\ 2003''\ The\ package\ \"\[nstcl\]-database\"\ \[http://nstcl.sourceforge.net/\]\ uses\ a\ database\ driver\ for\ \[Oracle\].\n\n\n\n----\n\n**Installing\ Oratcl\ on\ MacOS\ X**\n\n\[Kroc\]\ -\ 18\ Oct.\ 2006\ :\n\nOraTcl\ relies\ on\ the\ Oracle\ install\ but\ that's\ not\ so\ easy\ to\ install\ Oracle\ client\ on\ Mac\ OS\ X.\ Here\ are\ the\ steps\ I\ followed\ to\ get\ something\ that\ works:\n\n'''1)\ Download\ Oracle\ client\ 8.1.7:'''\n\nThe\ file\ to\ get\ is\ '''Oracle\ 8i\ v8.1.7.1\ OCI\ /\ Mac\ OS\ X'''\ from\ this\ page:\ http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/macsoft.html\ (you\ must\ register\ to\ get\ it\ but\ it's\ free).\n\nUncompress\ '''MacOSX_8171.cpio'''\ and\ you'll\ get\ 3\ files:\ MacOSX_8.1.7.1_OCI_Demo.zip,\ Oracle_8.1.7.1_Client.zip\ et\ Release_Notes.zip.\n\n'''2)\ Client\ installation:'''\n\nUncompress\ Oracle_8.1.7.1_Client.zip\ then\ move\ '''Oracle_8.1.7.1_Client'''\ directory\ in\ your\ home.\n\nThen\ you\ must\ edit\ '''~/Oracle_8.1.7.1_Client/network/admin/tnsnames.ora'''\ to\ fit\ your\ server\ parameters.\ At\ the\ end,\ it\ should\ be\ something\ like\ this:\n\n\ MYBASE\ =\n\ \ \ \ \ (DESCRIPTION\ =\n\ \ \ \ \ \ \ \ \ (ADDRESS_LIST\ =\n\ \ \ \ \ \ \ \ \ \ \ \ \ (ADDRESS\ =\ (PROTOCOL\ =\ TCP)(HOST\ =\ 192.168.1.119)(PORT\ =\ 1521))\n\ \ \ \ \ \ \ \ \ )\n\ \ \ \ \ (CONNECT_DATA\ =\n\ \ \ \ \ \ \ \ \ (SID\ =\ MYBASE)\n\ \ \ \ \ )\n\ )\n\n'''3)\ Environment\ variable:'''\n\nAt\ least\ one\ environment\ variable,\ '''ORACLE_HOME''',\ must\ be\ set\ before\ loading\ \[OraTcl\]:\n\n\ set\ ::env(ORACLE_HOME)\ \[file\ normalize\ ~/Oracle_8.1.7.1_Client\]\n\nTested\ on\ Mac\ OS\ X\ 10.4.8\ with\ OraTcl\ 4.4\n\n----\n**Oracle\ 10\ and\ OraTcl**\n\nNote\ that\ Oracle\ 10\ brings,\ at\ least\ on\ some\ platforms,\ another\ wrinkle.\nFor\ me,\ on\ a\ SPARC\ Solaris\ 9\ system,\ Oracle\ 10\ defaults\ to\ 64\ bit\ libraries.\nIf\ you\ are\ using\ \[ActiveTcl\]\ or\ something\ similar,\ you\ will\ find\ that\noratcl\ was\ compiled\ as\ a\ 32\ bit\ interface.\ This\ means\ that\ you\ need\ to\nuse\ the\ environment\ varirable:\n======\n#\ For\ 32\ bit\ tcl\ on\ 64\ bit\ solaris\ with\ 64\ bit\ oracle.\nexport\ ORACLE_LIBRARY=\$ORACLE_HOME/lib32/libclntsh.so\n======\n\nso\ that\ oratcl\ can\ be\ loaded.\nThis\ is\ '''not'''\ a\ bug\ in\ oratcl.\ It\ is\ the\ mechanism\ that\ Oracle\ provides\nfor\ someone\ to\ use\ the\ 32\ bit\ libraries.\ You\ just\ need\ to\ know\ whether\nyou\ are\ using\ a\ 32\ bit\ or\ a\ 64\ bit\ tcl\ so\ that\ you\ get\ the\ correct\ shared\nlibraries.\n\n----\n**Oratcl\ tool\ sought**\n\nHas\ anyone\ written\ a\ Tcl/Tk\ tool\ that\ provides\ one\ with\ the\ ability\ to\ browse\ (and\ perhaps\ update)\ oracle\ table\ data?\n\n\[osalcescu\]\ -\ 2008-06-24\ -\ please\ check\ Tom's\ wisqlite\ application,\ it\ may\ be\ what\ you're\ looking\ for.\ http://www.nyx.net/~tpoindex/wisqlite.html\n\nThe\ graphic\ is\ interesting.\ I\ didn't\ see\ the\ code\ there,\ so\ I\ don't\ know\ how\ it\ works\ in\ general.\nLooking\ on\ this\ wiki,\ I\ only\ see\ references\ to\ it\ being\ related\ to\ \[sybtcl\].\ Looking\ in\ the\ sybtcl\ and\ oratcl\ code\ distributions,\ I\ see\ the\ code\ in\ the\ sybtcl\ distribution,\ but\ I\ don't\ see\ a\ comparable\ version\ for\ oratcl.\ The\ code\ distributed\ with\ sybtcl\ is\ very\ sybase\ specific\ -\ it\ isn't\ a\ matter\ of\ just\ changing\ the\ package\ require\ statement.\ \ I\ could\ probably\ go\ through\ and\ rewrite\ it\ to\ work\ with\ oratcl,\ but\ right\ now\ I\ don't\ have\ the\ available\ time\ to\ do\ that.\ Thanks\ for\ the\ pointer\ though.\n\n''\[escargo\]''\ -\ The\ link\ for\ wisqlite\ does\ not\ show\ how\ to\ get\ the\ application,\ plus\ the\ page\ claims\ to\ have\ last\ been\ revised\nin\ 1995.\ Tom's\ home\ page\ there\ \[http://www.nyx.net/~tpoindex/\]\ says\ it\ was\ last\ revised\ in\ 1999,\ and\ has\ no\ link\ to\ wisqlite.\n\n\[aec\]\ -\ 2008-06-25\ -\ I\ found\ an\ old\ distribution\ of\ oratcl\ which\ contains\ oddis\ and\ wosql\ in\ the\ examples\ subdirectory\ which\ may\ be\ what\ you\ are\ seeking.\ \ Goto\ ftp://tcl.activestate.com/pub/tcl/mirror/ftp.procplace.com/sorted/databases/oratcl-2.5/index.html\ and\ get\ the\ oratcl-2.5.tar.gz\ archive\ file.\n\n\[LV\]\ Thanks.\ With\ that\ name,\ I\ was\ able\ to\ track\ down\ a\ copy.\ I\ actually\ found\ a\ development\ branch\ of\ oratcl\ 2.7\ which\ still\ had\ a\ version\ of\ wosql\ in\ it.\ I\ wonder\ whether\ anyone\ has\ done\ anything\ with\ it\ in\ the\ past\ few\ years.\n\n\[osalcescu\]\ -\ 2008-06-26\ -\ Well,\ I\ did\ develop,\ some\ time\ ago,\ a\ more\ basic\ utility.\ Nothing\ that\ fancy.\ If\ you're\ interested\ I\ can\ pass\ you\ the\ code,\ could\ be\ your\ start-up\ coding\ boost.\ Or\ not...\ :)\ Leave\ an\ email\ address\ here\ if\ you're\ interested.\n\n''\[escargo\]''\ -\ Aren't\ there\ ''two''\ programs\ mentioned\ here,\ which\ are\ distinct:\ '''wisqlite'''\ (for\ which\ no\ source\ has\ been\ identified),\nand\ '''wosql''',\ which\ has\ been\ found\ again?\ \ Based\ on\ the\ name,\ I\ would\ have\ thought\ that\ wisqlite\ was\ a\ client\ \[SQLite\],\ nor\ Oracle.\n\n\[LV\]\ wisqlite\ is\ unrelated\ to\ Oratcl.\ It\ was,\ in\ fact,\ created\ before\ SQLite\ was\ created!\ The\ name\ is,\ I\ suspect,\ a\ play\ on\ the\ idea\ of\ a\ light\ weight\ \"w\"indowing\ \"sq\"\ \"lite\"\ weight\ program,\ probably\ designed\ more\ for\ conveying\ the\ idea\ of\ what\ someone\ could\ do\ rather\ than\ intended\ to\ be\ a\ full\ fledged\ production\ quality\ application.\ Tom\ provided,\ as\ a\ part\ of\ the\ sybtcl\ distribution,\ the\ original\ application.\ When\ I\ went\ looking\ for\ wosql,\ on\ some\ web\ site\ I\ ran\ across\ a\ note\ that\ implied\ that\ code\ was\ basically\ a\ \[port\]\ of\ wisqlite\ to\ oratcl,\ and\ thus\ the\ name\ \"w\"indowing\ \"o\"racle\ \"sql\"\ wosql.\n\[TP\]\ LV\ is\ pretty\ much\ correct\ concerning\ the\ naming\ wisqlite\ and\ wosql.\ \ Sybase's\ command\ line\ utility\ was/is\ called\n''isql'',\ and\ Sybase\ had\ a\ Windows\ version\ called\ ''wisql''.\ \ I\ thought\ my\ tool\ for\ Sybtcl\ was\ lighter\ and\ simpler,\ thus\nthe\ name\ ''wisqlite''.\n\n\[LV\]\ Note\ that\ wosql's\ history\ comments\ seem\ to\ indicate\ that\ the\ last\ release\ was\ back\ in\ the\ mid\ to\ late\ 1990s.\nIf\ you\ don't\ have\ older\ oratcl's\ installed\ on\ your\ system,\ you\ may\ find\ problems.\ If\ you\ do\ have\ older\ ones,\ you\ will\ have\ to\ experiment\ with\ versions\ to\ find\ out\ which\ one\ is\ the\ one\ you\ need.\n\n----\n**Note\ about\ orafetch**\n\[LV\]\ 2008\ Nov\ 17\nIn\ moving\ from\ oratcl\ 4.2\ to\ 4.4,\ I\ noticed\ a\ difference\ in\ behavior\ in\ one\ of\ my\ programs.\ Turns\ out\ that\ in\ my\ program\ I\ used:\n\n===\norafetch\ ...\ -command\ \{\ name\ \}\n===\n\nIn\ my\ program,\ the\ '''name'''\ proc\ returned\ without\ specifying\ an\ argument.\ In\ oratcl\ 4.2,\ the\ program\ worked\ fine.\ In\ oratcl\ 4.4,\ the\ return\ code\ from\ orafetch\ appears\ to\ have\ become\ the\ return\ value\ from\ '''name'''.\ I\ changed\ '''name'''\ to\ return\ 0\ instead\ of\ nothing,\ and\ my\ program\ worked\ again.\n\nIn\ my\ case,\ this\ was\ a\ better\ coding\ style\ anyways,\ so\ it\ worked\ out\ well.\ Just\ wanted\ to\ be\ certain\ that\ anyone\ else\ encountering\ peculiar\ behavior\ thinks\ of\ this.\n\n----\n\[LV\]\ 2009-Jan-21\nI\ have\ a\ situation\ for\ which\ I'm\ looking\ for\ a\ solution.\n\nI\ have\ two\ data\ sources\ -\ one,\ a\ flat\ text\ file,\ containing\ deliminated\nfields\ of\ information.\ The\ first\ field\ is\ an\ item\ identifier.\n\nThe\ second\ data\ source\ is\ an\ oracle\ table,\ where\ each\ column\ corresponds\nto\ the\ fields\ from\ the\ flat\ file\ and\ the\ rows\ should\ correspond\ to\ each\nline.\n\nWhat\ I\ am\ wanting\ to\ end\ up\ with\ is\ a\ program\ that\ reports\ items\ from\ the\nflat\ file\ that\ are\ not\ found\ in\ the\ table,\ and\ items\ in\ the\ table\ which\nare\ not\ found\ in\ the\ flat\ file.\n\nI\ supposed\ I\ could\ dynamically\ generate\ a\ select\ statement\ with\ a\nwhere\ col_name\ not\ in\ (val1,\ val2,\ ....,\ val2000)\ type\ statement,\ but\nI\ was\ wondering\ if\ anyone\ had\ other\ ideas\ of\ ways\ to\ approach\ the\nsituation.\n\nHarm\ Olthof\ -\ 2009-Jan-22\nThere\ are\ quite\ a\ few\ solutions\ from\ the\ Oracle\ side.\ \n(1)\ you\ can\ import\ the\ flat\ file\ into\ your\ database,\ using\ sqlloader\;\n(2)\ From\ Oracle\ version\ 9.x\ and\ higher\ you\ can\ also\ link\ it,\ using\ the\ concept\ of\ \"External\ Tables\"\;\n(3)\ Oracle\ also\ has\ a\ \[\[webdav\]\]\ solution,\ but\ this\ not\ generally\ made\ available\ by\ the\ dba-er.\ I\ think\ \[\[ftp\]\]\ is\ also\ possible\;\n(4)\ You\ could\ convert\ your\ flat\ file\ to\ xml\ and\ then\ there\ are\ more\ sophisticated\ possibilities\;\nAll\ of\ these\ possibilities\ expose\ the\ flat\ file\ as\ a\ table\ and\ then\ you\ can\ do\ a\ \"..where\ not\ exists..\"\ query.\nOracle\ has\ a\ kind\ of\ combination\ of\ our\ wiki\ and\ a\ newsgroup,\ run\ by\ Tom\ Kyte\ on:\ \[http://asktom.oracle.com\].\nIf\ you\ go\ there\ and\ search\ for\ things\ like\ \ sqlloader,\ external\ tables,\ csv,\ flat\ file\ etc.\ you'll\ find\ a\ lot\ of\ explanations\ and\ examples.\ No\ \[\[Tcl\]\]\ solution.\ It\ would\ be\ great\ if\ someone\ wrote\ a\ tcl\ Oracle\ Cartridge\ so\ we\ could\ use\ tcl\ instead\ of\ pl/sql.\n\n----\n**See\ also**\n\n\ \ \ *\ \[Programming\ Oracle\ stored-procedure\ cursors\]\n\ \ \ *\ \[oratcl\ examples\]\n\n\n\ \ \ *\ \[Oratcl\ Logon\ Dialog\]\n\n\n\ \ \ *\ \[Plotting\ data\]\n\n----\n!!!!!!\n%|\ \[Category\ Package\]\ |\ \[Category\ Database\]\ |%\n!!!!!!} CALL {my revision Oratcl} CALL {::oo::Obj1667630 process revision/Oratcl} CALL {::oo::Obj1667628 process}

-errorcode

NONE

-errorinfo

Unknow state transition: LINE -> END
    while executing
"error $msg"
    (class "::Wiki" method "render_wikit" line 6)
    invoked from within
"my render_$default_markup $N $C $mkup_rendering_engine"
    (class "::Wiki" method "render" line 8)
    invoked from within
"my render $name $C"
    (class "::Wiki" method "revision" line 31)
    invoked from within
"my revision $page"
    (class "::Wiki" method "process" line 56)
    invoked from within
"$server process [string trim $uri /]"

-errorline

4