<?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=UdoraSync</id>
	<title>UdoraSync - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pickwiki.org/index.php?action=history&amp;feed=atom&amp;title=UdoraSync"/>
	<link rel="alternate" type="text/html" href="https://pickwiki.org/index.php?title=UdoraSync&amp;action=history"/>
	<updated>2026-04-28T23:20:20Z</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=UdoraSync&amp;diff=2418&amp;oldid=prev</id>
		<title>Conversion script: link fix</title>
		<link rel="alternate" type="text/html" href="https://pickwiki.org/index.php?title=UdoraSync&amp;diff=2418&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;Glue script to take a sql stmt and pass back data via named pipe&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
#!/usr/local/bin/perl&lt;br /&gt;
&lt;br /&gt;
# 11/07/2001 Ian  Add write output to debug file, move open pipe into loop&lt;br /&gt;
&lt;br /&gt;
use POSIX;&lt;br /&gt;
use DBI;&lt;br /&gt;
use DBD::Oracle;&lt;br /&gt;
use strict;&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;
&lt;br /&gt;
my $fld_delim = chr(253);&lt;br /&gt;
my $crlf_delim = chr(252);&lt;br /&gt;
my $debug = 1;&lt;br /&gt;
my $data;&lt;br /&gt;
my $dbh;&lt;br /&gt;
my $i;&lt;br /&gt;
my $infile;&lt;br /&gt;
my $j;&lt;br /&gt;
my $outfile;&lt;br /&gt;
my $pidfile;&lt;br /&gt;
my $rc;&lt;br /&gt;
my $req;&lt;br /&gt;
my $sid;&lt;br /&gt;
my $statement;&lt;br /&gt;
my $sth;&lt;br /&gt;
my $table;&lt;br /&gt;
&lt;br /&gt;
$sid=$ARGV[0];&lt;br /&gt;
if ($sid eq &amp;quot;&amp;quot;) {&lt;br /&gt;
   print &amp;quot;Usage: /usr/local/bin/udora_sync.pl &amp;lt;sid&amp;gt;\n&amp;quot;;&lt;br /&gt;
   exit (1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$infile = &amp;quot;/samba_share/oracle/$sid/in&amp;quot;;&lt;br /&gt;
$pidfile = &amp;quot;/samba_share/oracle/$sid/pid&amp;quot;;&lt;br /&gt;
open (PID, &amp;quot;&amp;gt;$pidfile&amp;quot;) or die &amp;quot;Cannot open $pidfile for writing: $!\n&amp;quot;;&lt;br /&gt;
print PID $$;&lt;br /&gt;
close (PID);&lt;br /&gt;
&lt;br /&gt;
my $USER=&amp;quot;scott&amp;quot;;&lt;br /&gt;
my $PASS=&amp;quot;tiger&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
if( !( $dbh = DBI-&amp;gt;connect($sid,$USER,$PASS, &amp;#039;Oracle&amp;#039;) ) )&lt;br /&gt;
{&lt;br /&gt;
   die &amp;quot;Cannot connect database\n$DBI::errstr&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# This is needed for those long sql returns...&lt;br /&gt;
$dbh-&amp;gt;{[[LongReadLen]]}=4094;&lt;br /&gt;
&lt;br /&gt;
open(INF, &amp;quot;&amp;lt;$infile&amp;quot;) or bug (&amp;quot;Cannot open $infile: $!\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
while(1) {&lt;br /&gt;
   # Read the request as 1 line.  Note: if the request if &amp;gt; 512 bytes&lt;br /&gt;
   # and multiple processes are writing the pipe there is potential&lt;br /&gt;
   # for &amp;quot;scrambling&amp;quot; requests that are received at the same time&lt;br /&gt;
   $req=&amp;lt;INF&amp;gt;;&lt;br /&gt;
   next unless defined $req;&lt;br /&gt;
   bug (&amp;quot;request=$req&amp;quot;);&lt;br /&gt;
   chomp($req);&lt;br /&gt;
&lt;br /&gt;
   # Break the request into two pieces file-name__sql-request&lt;br /&gt;
   if ($req =~ /(.*)__(.*)/) {&lt;br /&gt;
        $outfile=$1;&lt;br /&gt;
        $statement=$2;&lt;br /&gt;
        next unless defined $statement;&lt;br /&gt;
        open(OUTF, &amp;quot;&amp;gt;$outfile&amp;quot;) or bug (&amp;quot;Cannot open $outfile\n&amp;quot;);&lt;br /&gt;
        process();&lt;br /&gt;
        close(OUTF);&lt;br /&gt;
   } else {&lt;br /&gt;
        bug (&amp;quot;Malformed request: $req\n&amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub process {&lt;br /&gt;
   if( !( $sth = $dbh-&amp;gt;prepare(&amp;quot;$statement&amp;quot;) ) )&lt;br /&gt;
   {&lt;br /&gt;
      output(&amp;quot;0\nCannot prepare statement\n$DBI::errstr\n&amp;quot;);&lt;br /&gt;
      return;&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;
         output(&amp;quot;0\nCannot process statement\n$DBI::errstr\n&amp;quot;);&lt;br /&gt;
         return;&lt;br /&gt;
      }&lt;br /&gt;
      my $names = $sth-&amp;gt;{NAME};&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;
         output(&amp;quot;0\nNo rows returned:$#{$table}\n&amp;quot;);&lt;br /&gt;
         return;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      # Output number of rows&lt;br /&gt;
      output($#{$table}+1);&lt;br /&gt;
      output(&amp;quot;\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
      for ($i=0 ; $i &amp;lt;= $#$names ; $i++)&lt;br /&gt;
      {&lt;br /&gt;
         output($names-&amp;gt;[$i]);&lt;br /&gt;
         if ($i != $#$names) {output($fld_delim);}&lt;br /&gt;
      }&lt;br /&gt;
      output(&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;
            output($data);&lt;br /&gt;
            if ($j != $#{$table-&amp;gt;[$i]}) {output($fld_delim);}&lt;br /&gt;
         }&lt;br /&gt;
         if ($i != $#{$table}) {output(&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;
         output(&amp;quot;0\n0 rows updated\n&amp;quot;);&lt;br /&gt;
         return;&lt;br /&gt;
      } else {&lt;br /&gt;
         output(&amp;quot;$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;
   $sth-&amp;gt;finish;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub output {&lt;br /&gt;
   my ($string) = @_;&lt;br /&gt;
   print OUTF $string;&lt;br /&gt;
   #bug ($string.&amp;quot;\n&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub bug {&lt;br /&gt;
   my ($msg) = @_;&lt;br /&gt;
   if ($debug) {&lt;br /&gt;
       print localtime() . &amp;quot;:&amp;quot; . $sid . &amp;quot;:&amp;quot; . $msg;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;/div&gt;</summary>
		<author><name>Conversion script</name></author>
	</entry>
</feed>