Sponsored Content
Top Forums Shell Programming and Scripting ksh and Oracle stored procedure output in logfile Post 302931703 by homer4all on Wednesday 14th of January 2015 07:15:15 PM
Old 01-14-2015
Question ksh and Oracle stored procedure output in logfile

Friends,
I pass some runtime arguments (date, number) through ksh script to Oracle procedure, use input value and pass it on to procedure.

Oracle procedure gets input value, run query and logs everything in the logfile.

I'm facing with couple of challenges

1. Even though I pass all required parameter for procedure variable still script run complains about wrong number or type of arguments.

2. How to get all rows stored into logfile

3. Is this correct approach? looks like getting Oracle stored procedure output in logfile is really challenging?

Query is SELECT query but connecting KSH and Oracle seems challenging.

Code:
#!/bin/ksh

$1=10;               #runtime input value
$2=30;               #runtime input value
$3=50;               #runtime input value
$4='20150114'; #yyyymmdd input value

echo "running Oracle procedure"
(
$ORACLE_HOME/bin/sqlplus -s -l

set linesize 100

var v_empid  number,
var v_name   varchar2;
var v_last   varchar2;
var v_dt     varchar2;

alter session set nls_date_format = 'mm-dd-yyyy hh24:mi:ss';
exec pkg.proc($1, $2, $3, $4,:v_empid, :v_name, :v_last, :v_dt);

) > $logFile

Code:
=== Oracle package/procedure ===
CREATE OR REPLACE PACKAGE pkg
AS

   procedure proc (lFirst    IN number,
                   lSecond   IN number,
                   lThird    IN number,
                   lFour     IN date,
                     v_empid   OUT number,
                     v_name    OUT varchar2,
                     v_last    OUT varchar2,
                     v_dt      OUT date);

END pkg;
/

CREATE OR REPLACE PACKAGE BODY pkg
AS

PROCEDURE proc (lFirst    IN number,
                lSecond   IN number,
                lThird    IN number,
                lFour     IN date,
                  v_empid   OUT number,
                  v_name    OUT varchar2,
                  v_last    OUT varchar2,
                  v_dt      OUT date)
  
IS
BEGIN

SELECT dt, emp_id, first_name, last_name
INTO v_dt, v_empid, v_name, v_last
FROM employees
WHERE emp_id in (lFirst, lSecond)
AND dt >= to_date(lFour, 'yyyymmdd') - 1
AND date < date + INTERVAL '(lThird)' MINUTE;

END proc;

END pkg;
/

 

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Oracle stored procedure.

I am using sqlplus. I have the stored procedure name. How can i print the stored procedure content? (2 Replies)
Discussion started by: kamil
2 Replies

2. Shell Programming and Scripting

Execute an Oracle stored procedure from a shell scrip

Here is a snippet of my code: if then echo "\n Deleting all reports older than 24 hours. \n" >> $logfile ls -l $FileName >> $logfile ... (1 Reply)
Discussion started by: mh53j_fe
1 Replies

3. Shell Programming and Scripting

Shell arrays in oracle stored procedure

Is it possible to pass unix shell arrays in Oracle stored procedure? Is yes, how? Thanks (6 Replies)
Discussion started by: superprogrammer
6 Replies

4. Shell Programming and Scripting

calling a PL/SQL stored procedure from KSH

Hi I have a stored procedure which should be called from KSH. Could ayone please help me with this. Thanks (1 Reply)
Discussion started by: BlAhEr
1 Replies

5. Shell Programming and Scripting

Invoking Oracle stored procedure in unix shell script

Here's a shell script snippet..... cd $ORACLE_HOME/bin Retval=`sqlplus -s <<eof $TPDB_USER/april@$TPD_DBCONN whenever SQLERROR exit 2 rollback whenever OSERROR exit 3 rollback set serveroutput on set pages 999 var status_desc char(200) var status_code... (1 Reply)
Discussion started by: hidnana
1 Replies

6. Shell Programming and Scripting

how to pass the values to unix shell from the oracle stored procedure.

Hi i am calling a stored procedure from unix shell like this call test_proc('0002','20100218'); the stored procedure was giving output like this dbms_output.put_line(' processed earlier'); i want to see the output in the unix shell where i called. Thanks barani (6 Replies)
Discussion started by: barani75
6 Replies

7. Shell Programming and Scripting

how to call oracle stored procedure from unix shell

Hi i want to call a oracle stored procedure from unix (using bash shell). consider this is my oracle stored procedure with parameter create procedure testproc(name IN varchar, age IN Number, id OUT Number ) AS begin id=1; dbms_output.put.line('successfull validation') end;... (6 Replies)
Discussion started by: barani75
6 Replies

8. Shell Programming and Scripting

Call and redirect output of Oracle stored procedure from unix script

Hi, Can you assist me in how to redirect the output of oracle stored procedure from unix script? Something similar to what i did for sybase isql -U$MYDBLOG -D$MYDBNAME -S$MYDBSVR -P$MYDBPWD -o$MYFILE<< %% proc_my_test 8 go %% Thanks in advance - jak (0 Replies)
Discussion started by: jakSun8
0 Replies

9. Shell Programming and Scripting

Need to run Oracle stored procedure from UNIX env

Hi Everyone, I want to create a script where i need to run the oracle stored procedure from unix script and get the output(sequence number ) into a variable which i will pass in my datastage job. Below is my stored procedure:- DECLARE P_TRANSTYPE VARCHAR2(20); ... (4 Replies)
Discussion started by: prasson_ibm
4 Replies

10. Shell Programming and Scripting

Calling Oracle stored procedure from ksh script

Friends, I'm newbie with ksh so wanting some help.... 1. I'm trying to call oracle stored procedure from ksh script by taking variable value from runtime, feed into script and execute procedure. 2. Put name1 and name2 value from script run replacing $3 & $4 I'm trying to put name1 in... (4 Replies)
Discussion started by: homer4all
4 Replies
proc(n) 						       Tcl Built-In Commands							   proc(n)

__________________________________________________________________________________________________________________________________________________

NAME
proc - Create a Tcl procedure SYNOPSIS
proc name args body _________________________________________________________________ DESCRIPTION
The proc command creates a new Tcl procedure named name, replacing any existing command or procedure there may have been by that name. Whenever the new command is invoked, the contents of body will be executed by the Tcl interpreter. Normally, name is unqualified (does not include the names of any containing namespaces), and the new procedure is created in the current namespace. If name includes any namespace qualifiers, the procedure is created in the specified namespace. Args specifies the formal arguments to the procedure. It consists of a list, possibly empty, each of whose elements specifies one argument. Each argument specifier is also a list with either one or two fields. If there is only a single field in the specifier then it is the name of the argument; if there are two fields, then the first is the argu- ment name and the second is its default value. Arguments with default values that are followed by non-defaulted arguments become required arguments. In 8.6 this will be considered an error. When name is invoked a local variable will be created for each of the formal arguments to the procedure; its value will be the value of corresponding argument in the invoking command or the argument's default value. Actual arguments are assigned to formal arguments strictly in order. Arguments with default values need not be specified in a procedure invocation. However, there must be enough actual arguments for all the formal arguments that do not have defaults, and there must not be any extra actual arguments. Arguments with default values that are followed by non-defaulted arguments become required arguments (in 8.6 it will be considered an error). There is one special case to permit procedures with variable numbers of arguments. If the last formal argument has the name args, then a call to the procedure may contain more actual arguments than the procedure has formals. In this case, all of the actual arguments starting at the one that would be assigned to args are combined into a list (as if the list command had been used); this combined value is assigned to the local variable args. When body is being executed, variable names normally refer to local variables, which are created automatically when referenced and deleted when the procedure returns. One local variable is automatically created for each of the procedure's arguments. Other variables can only be accessed by invoking one of the global, variable, upvar or namespace upvar commands. The proc command returns an empty string. When a procedure is invoked, the procedure's return value is the value specified in a return command. If the procedure does not execute an explicit return, then its return value is the value of the last command executed in the pro- cedure's body. If an error occurs while executing the procedure body, then the procedure-as-a-whole will return that same error. EXAMPLES
This is a procedure that accepts arbitrarily many arguments and prints them out, one by one. proc printArguments args { foreach arg $args { puts $arg } } This procedure is a bit like the incr command, except it multiplies the contents of the named variable by the value, which defaults to 2: proc mult {varName {multiplier 2}} { upvar 1 $varName var set var [expr {$var * $multiplier}] } SEE ALSO
info(n), unknown(n) KEYWORDS
argument, procedure Tcl proc(n)
All times are GMT -4. The time now is 06:35 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy