<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://pickwiki.org/index.php?action=history&amp;feed=atom&amp;title=UdtOra</id>
	<title>UdtOra - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pickwiki.org/index.php?action=history&amp;feed=atom&amp;title=UdtOra"/>
	<link rel="alternate" type="text/html" href="https://pickwiki.org/index.php?title=UdtOra&amp;action=history"/>
	<updated>2026-04-28T22:15:43Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://pickwiki.org/index.php?title=UdtOra&amp;diff=2357&amp;oldid=prev</id>
		<title>Conversion script: link fix</title>
		<link rel="alternate" type="text/html" href="https://pickwiki.org/index.php?title=UdtOra&amp;diff=2357&amp;oldid=prev"/>
		<updated>2015-02-26T23:48:56Z</updated>

		<summary type="html">&lt;p&gt;link fix&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;The Basic program runs a perl script that actually connects to the database.  The perl script sends the results to stdout, which is captured by the Basic program and parsed into a dynamic array.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SUBROUTINE UDTORA(RTN,COL.HEADING,SQL.STATEMENT,OPTIONS,ERRCODE)&lt;br /&gt;
***************************************************************************&lt;br /&gt;
* Program: UDTORA&lt;br /&gt;
* Author : MATT CARROLL&lt;br /&gt;
* Date   : &lt;br /&gt;
* Edited : 08:29:36 Dec 06 2001 By MCGOWAN &lt;br /&gt;
* Comment: PASS SQL STATEMENT TO ORACLE DB, RETURNS DYN. ARRAY&lt;br /&gt;
***************************************************************************&lt;br /&gt;
* Date       By   Desc&lt;br /&gt;
* ---------- ---- ---------------------------------------------------------&lt;br /&gt;
* 04/11/2000 IAN  Modified perl script to return error code as follows:&lt;br /&gt;
                  *# Return value is&lt;br /&gt;
                  *# 0 no rows selected or updated&lt;br /&gt;
                  *# 1 success, first line of rtn = col headers, second = num rows selected/update&lt;br /&gt;
                  *# 2 error, see first line of RTN for description&lt;br /&gt;
* 07/31/2000 IAN  Escape $ chars in sql&lt;br /&gt;
* 04/02/2001 IAN  Pass in account (sid) to perl script&lt;br /&gt;
* 12/06/2001 IAN  Convert @am to &amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
* RTN              RETURNED TO CALLING PROGRAM. ARRAY OF DATA RETURNED FROM SQL.STATEMENT&lt;br /&gt;
* COL.HEADING      RETURNED TO CALLING PROGRAM. MULTI-VALUED LIST OF FIELD NAMES OF TABLE FROM FIRST ROW&lt;br /&gt;
* SQL.STATEMENT    A VALID SQL STATEMENT. PASSED IN.&lt;br /&gt;
* OPTIONS          TO BE ITEM&lt;br /&gt;
&lt;br /&gt;
COL.HEADING=&amp;quot;&amp;quot; ; PERL.ERR=0 ; ERRCODE=0&lt;br /&gt;
SWAP &amp;quot;$&amp;quot; WITH &amp;quot;\$&amp;quot; IN SQL.STATEMENT&lt;br /&gt;
SWAP @AM WITH &amp;quot; &amp;quot; IN SQL.STATEMENT&lt;br /&gt;
&lt;br /&gt;
ACCT = &amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;cut stuff about accounts&amp;gt;&lt;br /&gt;
&lt;br /&gt;
IF ACCT=&amp;quot;&amp;quot; THEN STOP &amp;quot;PLEASE ADD THIS ACCOUNT TO UDTORA&amp;quot;&lt;br /&gt;
&lt;br /&gt;
E= \!/usr/local/bin/udora.pl \:ACCT:\ &amp;quot;\:SQL.STATEMENT:\&amp;quot; ; echo $?\\ &lt;br /&gt;
EXECUTE E CAPTURING RTN&lt;br /&gt;
I=DCOUNT(RTN,@AM)&lt;br /&gt;
PERL.ERR=RTN&amp;lt;I-1&amp;gt;&lt;br /&gt;
DEL RTN&amp;lt;I&amp;gt;&lt;br /&gt;
DEL RTN&amp;lt;I-1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
IF PERL.ERR = 0 THEN&lt;br /&gt;
   * No rows selected/updated&lt;br /&gt;
   ERRCODE=0&lt;br /&gt;
   * Still get col headings&lt;br /&gt;
   COL.HEADING=RTN&amp;lt;1&amp;gt;&lt;br /&gt;
   DEL RTN&amp;lt;1&amp;gt;&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
IF PERL.ERR = 1 THEN&lt;br /&gt;
   * Get col headings&lt;br /&gt;
   COL.HEADING=RTN&amp;lt;1&amp;gt;&lt;br /&gt;
   DEL RTN&amp;lt;1&amp;gt;&lt;br /&gt;
   * Get number of rows updated/selected&lt;br /&gt;
   ERRCODE=RTN&amp;lt;1&amp;gt;&lt;br /&gt;
   DEL RTN&amp;lt;1&amp;gt;&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
IF PERL.ERR = 2 THEN&lt;br /&gt;
   * There was an error&lt;br /&gt;
   ERRCODE = -1&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
SWAP \@#@\ WITH @VM IN RTN&lt;br /&gt;
RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the perl script&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
use POSIX;&lt;br /&gt;
use DBI;&lt;br /&gt;
use DBI::DBD;   # simple test to make sure it&amp;#039;s okay&lt;br /&gt;
use DBD::Oracle;&lt;br /&gt;
&lt;br /&gt;
$ENV{[[ORACLE_BASE]]}=&amp;quot;/info/app/oracle&amp;quot;;&lt;br /&gt;
$ENV{[[ORACLE_HOME]]}=&amp;quot;/info/app/oracle/product/8.1.5&amp;quot;;&lt;br /&gt;
$ENV{[[NLS_LANG]]}=&amp;quot;american_america.[[WE8ISO8859P1]]&amp;quot;;&lt;br /&gt;
$ENV{[[ORA_NLS33]]}=&amp;quot;/info/app/oracle/product/8.1.5/ocommon/nls/admin/data&amp;quot;;&lt;br /&gt;
$user=&amp;quot;oracle&amp;quot;;&lt;br /&gt;
$pass=&amp;quot;xxx&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
my $db_sid=&amp;#039;trinity&amp;#039;;&lt;br /&gt;
my $rtn=0;&lt;br /&gt;
my $fld_delim = chr(253);&lt;br /&gt;
my $crlf_delim = chr(252);&lt;br /&gt;
&lt;br /&gt;
if( !( $dbh = DBI-&amp;gt;connect(&amp;#039;dbi:Oracle:host=sunrise;sid=trinity&amp;#039;,$user,$pass)))&lt;br /&gt;
{&lt;br /&gt;
   print &amp;quot;Cannot connect database\n$DBI::errstr\n&amp;quot;;&lt;br /&gt;
   exit 2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$statement=$ARGV[1];&lt;br /&gt;
$dbh-&amp;gt;{[[LongReadLen]]}=4094;&lt;br /&gt;
if( !( $sth = $dbh-&amp;gt;prepare(&amp;quot;$statement&amp;quot;) ) )&lt;br /&gt;
{&lt;br /&gt;
   print &amp;quot;Cannot prepare statement\n$DBI::errstr\n\n&amp;quot;;&lt;br /&gt;
   exit 2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if ($statement =~ /^select/i) {&lt;br /&gt;
   # Select statements return rows&lt;br /&gt;
   $rc=$sth-&amp;gt;execute;&lt;br /&gt;
   if( ! $rc )&lt;br /&gt;
   {&lt;br /&gt;
      print &amp;quot;Cannot process statement\n$DBI::errstr\n\n&amp;quot;;&lt;br /&gt;
      exit 2;&lt;br /&gt;
   }&lt;br /&gt;
   my $names = $sth-&amp;gt;{NAME};&lt;br /&gt;
&lt;br /&gt;
   for ($i=0 ; $i &amp;lt;= $#$names ; $i++)&lt;br /&gt;
   {&lt;br /&gt;
      print $names-&amp;gt;[$i];&lt;br /&gt;
      if ($i != $#$names) {print $fld_delim;}&lt;br /&gt;
   }&lt;br /&gt;
   print &amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
   $table = $sth-&amp;gt;fetchall_arrayref;&lt;br /&gt;
   if( $#{$table} &amp;lt; 0 )&lt;br /&gt;
   {&lt;br /&gt;
      print &amp;quot;No rows returned\n&amp;quot;;&lt;br /&gt;
      exit 0;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   print $#{$table}+1,&amp;quot;\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
   for $i ( 0 .. $#{$table} )&lt;br /&gt;
   {&lt;br /&gt;
      for $j ( 0 .. $#{$table-&amp;gt;[$i]} )&lt;br /&gt;
      {&lt;br /&gt;
         $data = $table-&amp;gt;[$i][$j];&lt;br /&gt;
         $data =~ s/\r\n/$crlf_delim/g;&lt;br /&gt;
         print $data;&lt;br /&gt;
         if ($j != $#{$table-&amp;gt;[$i]}) {print $fld_delim;}&lt;br /&gt;
      }&lt;br /&gt;
      {print &amp;quot;\n&amp;quot;;}&lt;br /&gt;
   }&lt;br /&gt;
} else {&lt;br /&gt;
   # It&amp;#039;s an update or insert statement&lt;br /&gt;
   $rc=$dbh-&amp;gt;do($statement);&lt;br /&gt;
   if ($rc eq &amp;quot;0E0&amp;quot;) {&lt;br /&gt;
       print &amp;quot;0 rows updated\n&amp;quot;;&lt;br /&gt;
       exit 0;&lt;br /&gt;
   } else {&lt;br /&gt;
      print &amp;quot;\n$rc\n$rc rows updated\n&amp;quot;;&lt;br /&gt;
      #$dbh-&amp;gt;commit;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Close our connection to the db&lt;br /&gt;
$sth-&amp;gt;finish;&lt;br /&gt;
&lt;br /&gt;
# Return value is&lt;br /&gt;
# 0 no rows selected or updated&lt;br /&gt;
# 1 success, first line of rtn = col headers, second = num rows selected/updated# 2 error, see first line of RTN for description&lt;br /&gt;
exit 1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Conversion script</name></author>
	</entry>
</feed>