Has anyone executed a stored procedures from a perl CGI. I am having 
problems when there are many rows returned. I need to finish this soon
so
please help.
Murli


The following is my  pl/sql code

CREATE OR REPLACE  PROCEDURE new_worker_select_cur
         ( f_name IN OUT  varchar2,
           l_name   OUT varchar2,
           email   OUT varchar2
          )
AS

CURSOR cursor_temp (cur_f_name IN varchar2) IS
SELECT PREFIX_NAME, FIRST_NAME, MIDDLE_INITIAL, LAST_NAME, EMAIL,
PEOPLE_ID, PID, SOURCE_ID,SOU
RCE_INFO, NSF_USER_TYPE FROM test WHERE first_name = cur_f_name;

temp_record      cursor_temp%ROWTYPE;

BEGIN

IF( cursor_temp%ISOPEN) THEN
        CLOSE cursor_temp;
END IF;
OPEN cursor_temp(f_name);

LOOP

        BEGIN

        FETCH cursor_temp INTO temp_record;
        EXIT WHEN cursor_temp%NOTFOUND;

        END;
        f_name := temp_record.first_name;
        l_name := temp_record.last_name;
        email  := temp_record.email;

DBMS_OUTPUT.put_line(f_name);
DBMS_OUTPUT.put_line(l_name);
DBMS_OUTPUT.put_line(email);

END LOOP;

RETURN;

IF(cursor_temp%ISOPEN) THEN
        CLOSE cursor_temp;
END IF;


END NEW_WORKER_SELECT_CUR;
~
----------------------------------------------------------------------
-----------------------------------------------

The following is my perl code
#!/usr/local/bin/perl

use DBI;
use CGI qw(:all);
$q = new CGI;

print $q->header(-type=>'text/plain');

$ENV{'ORACLE_HOME'} = '/usr/local/apps/oracle/home';
$ENV{'ORACLE_SID'} = 'npaci';
$ENV{'TWO_TASK'} = 'npaci';
  
my $dbh = DBI->connect("DBI:Oracle:",
                       "userid",
                       "xxxxxxxxx",
                       {
                        PrintError => 1, # warn() on errors
                        RaiseError => 0, # don't die on error
                        AutoCommit => 1, # commit executes
                                         # immediately
                       }
                      )
or die "Cannot connect to database: $DBI::errstr";

my $p_fname = 'KELLY';
my $p_lname ;
my $p_email;

$csr = $dbh->prepare(qq{
        BEGIN  
        NEW_WORKER_SELECT_CUR(:p_fname, :p_lname, :p_email);
        END;
});

$csr->bind_param_inout(":p_fname", \$p_fname,255);
$csr->bind_param_inout(":p_lname", \$p_lname,255);
$csr->bind_param_inout(":p_email", \$p_email,255);
$csr->execute;

print "$p_email  $p_fname  $p_lname \n";

# It works fine when there is only one rwo returned what do you do for
multiple rows.

#while (@row = $csr->fetchrow_array()){

# $delim = "";
#for($i = 0; $i < @row; $i++)
#{
#  print $delim . $row[$i];
# $delim = ",";
# }
#print "\n";

#}

$dbh->disconnect(); # NOP under Apache::DBI

exit;

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to