Error connecting sqlplus
Publicado por Arturo (1 intervención) el 22/03/2010 19:41:48
Hola a todos,
Soy nuevo en el mundo del Perl y ando un poco estancado y a ver si alguien puede ayudarme con el siguente error que tengo al ejecutar mi script.
En el siguiente código hago una conexión con sqlplus (he visto algún script como referencia para saber como hacerlo) pero la salida de esta conexión me dice que no se conecta realmente a la DB y no entiendo el porque.
Código:
# Execute stored procedure using sqlplus
open( file_handler, ">temp_commands.sql") or die "Can't Create temp_commands.sql: $!";
print file_handler "CALL post_migration_updates \n";
$sql_command = "sqlplus -silent ". "$db_user/$db_pswd\@$data_source exec"
. " post_migration_updates('$fields[0]','$fields[1]','$fields[2]','$fields[3]','$fields[4]','$fields[5]','$fields[6]') <temp_commands.sql";
if ($g_verbose) {
print STDOUT "\n****** Calling sqlplus as follows:\n";
print STDOUT "$sql_command";
}
close(file_handler);
$sql_output = `$sql_command`;
$exitcode = $?;
print STDOUT "\n*$exitcode\n";
unlink "temp_commands.sql";
if ($g_verbose) {
print STDOUT "\n****** Output of sqlplus follows:\n";
print STDOUT "$sql_output\n";
}
# This check to test whether the client sqlplus was invoked properly or not.
if(length($sql_output) == 0) {
print STDOUT "sqlplus client not invoked properly \n";
print STDOUT "$program_name: Processing FAILED\n";
exit $FAILURE;
}
Y la salida es la siguiente:
****** Calling sqlplus as follows:
sqlplus -silent orincon/orincon@SRSBBMD exec post_migration_updates('SERVICE_cabreraa_4','11/11/11','msisdn','cabreraa_4 1','contract_id','service_laber','sim_type
') <temp_commands.sqlsh: -c: line 0: syntax error near unexpected token `('
sh: -c: line 0: `sqlplus -silent cabreraa/cabreraa@SRRBRMD exec post_migration_updates('SERVICE_cabreraa_4','11/11/11','msisdn','cabreraa_4 1','contract_id','service_laber','sim_type'
*512
****** Output of sqlplus follows:
sqlplus client not invoked properly
Post Migration Script: Processing FAILED
Es decir, obtengo como retorno el 512, que no encuentro lo que es y he comprobado que si ejecuto manualmente la sentencia sqlplus con ese user, pwd y alias pues funciona. He comprobado que la sentencia sqlplus no se direcciona al fichero temp_commands.sql tal y como está en el código, luego ando algo perdido de ideas como podéis ver.
Muchas gracias por adelantado a todos!
Soy nuevo en el mundo del Perl y ando un poco estancado y a ver si alguien puede ayudarme con el siguente error que tengo al ejecutar mi script.
En el siguiente código hago una conexión con sqlplus (he visto algún script como referencia para saber como hacerlo) pero la salida de esta conexión me dice que no se conecta realmente a la DB y no entiendo el porque.
Código:
# Execute stored procedure using sqlplus
open( file_handler, ">temp_commands.sql") or die "Can't Create temp_commands.sql: $!";
print file_handler "CALL post_migration_updates \n";
$sql_command = "sqlplus -silent ". "$db_user/$db_pswd\@$data_source exec"
. " post_migration_updates('$fields[0]','$fields[1]','$fields[2]','$fields[3]','$fields[4]','$fields[5]','$fields[6]') <temp_commands.sql";
if ($g_verbose) {
print STDOUT "\n****** Calling sqlplus as follows:\n";
print STDOUT "$sql_command";
}
close(file_handler);
$sql_output = `$sql_command`;
$exitcode = $?;
print STDOUT "\n*$exitcode\n";
unlink "temp_commands.sql";
if ($g_verbose) {
print STDOUT "\n****** Output of sqlplus follows:\n";
print STDOUT "$sql_output\n";
}
# This check to test whether the client sqlplus was invoked properly or not.
if(length($sql_output) == 0) {
print STDOUT "sqlplus client not invoked properly \n";
print STDOUT "$program_name: Processing FAILED\n";
exit $FAILURE;
}
Y la salida es la siguiente:
****** Calling sqlplus as follows:
sqlplus -silent orincon/orincon@SRSBBMD exec post_migration_updates('SERVICE_cabreraa_4','11/11/11','msisdn','cabreraa_4 1','contract_id','service_laber','sim_type
') <temp_commands.sqlsh: -c: line 0: syntax error near unexpected token `('
sh: -c: line 0: `sqlplus -silent cabreraa/cabreraa@SRRBRMD exec post_migration_updates('SERVICE_cabreraa_4','11/11/11','msisdn','cabreraa_4 1','contract_id','service_laber','sim_type'
*512
****** Output of sqlplus follows:
sqlplus client not invoked properly
Post Migration Script: Processing FAILED
Es decir, obtengo como retorno el 512, que no encuentro lo que es y he comprobado que si ejecuto manualmente la sentencia sqlplus con ese user, pwd y alias pues funciona. He comprobado que la sentencia sqlplus no se direcciona al fichero temp_commands.sql tal y como está en el código, luego ando algo perdido de ideas como podéis ver.
Muchas gracias por adelantado a todos!
Valora esta pregunta


0