A script in a procedure???
Hi,
I have a little script called 123.sql. Now I'm trying to execute a procedure that recieves the parameter namely the path of the script 'c:\temp\123.sql'. The purpose is to execute the script via the procedure, this has his reason because magic software is strugling with the ';' in statements, is it possible or is there a workaround or .... I have tried alot of different ways to come to good solution but nothing worked.
thx in advance,
greetings,
Greg
Hi Greg,
The way this may be possible is:
1) The directory where the script is residing needs to be visible by the Oracle server.
2) Define the path of the script as directory.
3) Read (text_io) the file from the location using the directory.
4) execute what ever you have read.
But I would suggest, rather then having the script in the file, why dont you create a table where you can store the text of the file. And read the table instead. That should be much simplier.
Regards,
Samujjwal Basu
Similar Messages
-
Convert php script to oracle procedure
To all please help me... I wanna convert php script to oracle procedure..and the script is (exp)..
<?php
include("../config/koneksi.php");
$customer=$_POST['customer'];
$tanggal1=$_POST['theDate1'];
$tanggal2=$_POST['theDate2'];
$no_bulan=substr($tanggal1,0,2);
$bulan_sajah= (substr($no_bulan,0,1)=='0')? substr($no_bulan,1,1) : $no_bulan;
$tahun_sajah=substr($tanggal1,3,4);
$blnkmrn=(int)$bulan_sajah;
$thnkmrn=(int)$tahun_sajah;
if ($blnkmrn==1) {
$bulan_lalu=12;
$tahun_lalu=$thnkmrn-1;}
else {
$bulan_lalu=$blnkmrn-1;
$tahun_lalu=$thnkmrn;
$bulanlalu=strval($bulan_lalu);
$tahunlalu=strval($tahun_lalu);
$sql = "select nip_nas from edo_customer_master_dives where standard_name='$customer'";
$stm = ociparse($conn,$sql);
ociexecute($stm);
ocifetch($stm);
$data=ociresult($stm,1);
$sql12 = "select PRODUCT_LINE_ID,sum(REVENUE)
from PA_FACT_REV_BILLED_CC
where nip_nas='$data' and year_id='$tahun_sajah' and month_id='$bulan_sajah' group by PRODUCT_LINE_ID";
$stm12 = ociparse($conn,$sql12);
ociexecute($stm12);
$total_revenue=0;
$i="0";
while (ocifetch($stm12)){
$rev_items=ociresult($stm12,1);
$revenue=ociresult($stm12,2);
$sql2 = "select * from PA_FACT_REV_BILLED_CC
where nip_nas='$data' and PRODUCT_LINE_ID='$rev_items'";
$stm2 = ociparse($conn,$sql2);
ociexecute($stm2);
ocifetch($stm2);
$tahun=ociresult($stm2,1);
$bulan=ociresult($stm2,2);
$nipnas=ociresult($stm2,3);
$prod_line=ociresult($stm2,4);
$rev_item=ociresult($stm2,5);
//$revenue=ociresult($stm2,6);
$query1 = "select standard_name from edo_customer_master_dives where nip_nas='$nipnas'";
$st1 = ociparse($conn,$query1);
ociexecute($st1);
ocifetch($st1);
$nama_cust=ociresult($st1,1);
$query2 = "select prod_line_lname from parameter.p_prod_line@dwhnas where prod_line_id='$prod_line'";
$st2 = ociparse($conn,$query2);
ociexecute($st2);
ocifetch($st2);
$nama_prod_line=ociresult($st2,1);
$query3 = "select REV_TYPE_LNAME from parameter.p_rev_type@dwhnas where REV_TYPE_ID='$rev_item'";
$st3 = ociparse($conn,$query3);
ociexecute($st3);
ocifetch($st3);
$nama_rev_item=ociresult($st3,1);
$query4="select sum(total_usage) from PA_FACT_TRAFFIC_CC where PRODUCT_LINE_ID='$prod_line' and nip_nas='$nipnas' and year_id='$tahun_sajah' and month_id='$bulan_sajah' group by PRODUCT_LINE_ID";
$st4 = ociparse($conn,$query4);
ociexecute($st4);
ocifetch($st4);
$total_usage=ociresult($st4,1);
$total=$revenue + $total_usage;
echo $tahun." ".$bulan." ".$nama_cust." ".$nama_prod_line." ".$nama_rev_item." ".$revenue." ".$total_usage." ".$total."<br>";
$total_revenue=$total_revenue+$total;
$i++;
echo $total_revenue;
//cost of product
$query5="select * from PA_FACT_TRAFFIC_CC where nip_nas='$nipnas' and year_id='$tahunlalu' and month_id='$bulanlalu'";
$st5 = ociparse($conn,$query5);
ociexecute($st5);
$total1=0;
$total2=0;
$total3=0;
$total4=0;
$total5=0;
while (ocifetch($st5)){
$nipnas=ociresult($st5,3);
$lineid=ociresult($st5,4);
$itemid=ociresult($st5,5);
$call=ociresult($st5,6);
$unit=ociresult($st5,7);
$query6 = "select prod_line_lname from parameter.p_prod_line@dwhnas where prod_line_id='$lineid'";
$st6 = ociparse($conn,$query6);
ociexecute($st6);
ocifetch($st6);
$nama_prod_line=ociresult($st6,1);
$query7 = "select REV_item_LNAME from parameter.p_rev_item@dwhnas where REV_item_ID='$itemid'";
$st7 = ociparse($conn,$query7);
ociexecute($st7);
ocifetch($st7);
$nama_rev_item=ociresult($st7,1);
$query8 = "select * from cost_of_product where prod_line_lname='$nama_prod_line' and REV_item_LNAME='$nama_rev_item' and end_date is null";
$st8 = ociparse($conn,$query8);
ociexecute($st8);
ocifetch($st8);
$lineid_cost=ociresult($st8,1);
$itemid_cost=ociresult($st8,2);
$satuan=ociresult($st8,5);
$nilai=ociresult($st8,7);
if (strtoupper($satuan)=='MENIT') $total1=$total1+(($unit/60)*$nilai);
if (strtoupper($satuan)=='KBPS') $total2=$total2+($unit*$nilai);
if (strtoupper($satuan)=='SMS') $total3=$total3+($call*$nilai);
if (strtoupper($satuan)=='SSL') $total4=$total4+($call*$nilai);
if (strtoupper($satuan)=='SST') $total5=$total5+($call*$nilai);
$total_cost_pots=$total1+$total2+$total3+$total4+$total5;
echo $total_cost_pots;
?>
this script just for exp.Please convert step by step. for example
(1) remove inverted quotation mark ( ` )
(2) modify constraints syntax (PRIMARY KEY,UNIQUE KEY, KEY etc.) to [url http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14200/clauses002.htm#g1053592]Oracle constraints.
(3) modify some datatype to [url http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements001.htm#i45441]Oracle datatype
(4) think how to convert auto_increment ([url http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_6015.htm#i2067093]Sequence, [url http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_7004.htm#i2235611]Beffore Trigger etc. on Oracle)
http://download-west.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_packages.htm#sthref864
http://download-west.oracle.com/docs/cd/B19306_01/appdev.102/b14261/toc.htm -
Calling shell script from sql procedure
Hi gurus
Is it possible
1)to call a shell script from sql procedure
2)that shell script has to return one value
3)and again sql procedure(calling shell script) has to capture the return value.
please help me to write this scriptYou may NOT have EXECUTE privilege/ permissions on the DBMS_PIPE package. Check with your DBA.
Using DBMS_PIPE may not be that simple to implement. Just making a call to DBMS_PIPE procedure will not do anything. It will NOT trigger anything on the UNIX side.
. You will also need to :
1. Write a job (ie CRON) at UNIX side which will keep read the incoming pipe for new messages, Unpack the message and get the command to be executed at the UNIX side -- There will be a lot of work involved here + DBA presence/activity is also required.
As Justin has pointed out, try and use HOST command which is very simple or try and use Java.
Shailender Mehta -
Privilege error while running Create Table Script inside Stored Procedure.
Hello All,
I have Oracle 10G server and SQL Developer Client,
I have One User with Appropriate Rights, Login with that user from SQL Developer(client),
Within my Procedure, Dynamic SQL script is like If I pass in a TABLE NAME as parameter, It Creates that table, but now problem is It throws an error for Privilege.
Where as if I Execute Create table script outside the procedure(as Normal SQL), it executes Ok, but why it throws Privilege error within procedure ?
Whether any extra Rights needed for this user to execute such Create Table Dynamic SQL?
Please Help.
Thanks,
j@yElic
Thanks a lot dude...
It works now,
regards,
j@y -
Want to create unix shell script for Clone procedure in 11i and r12
Want to create unix shell script for Clone procedure in 11i and r12 .Can anyone help me on this as I m new to oracle apps and scripting.
Thanks in advance .user11958935 wrote:
Thanks but I want it for application cloning ie adcfgclone and autoconfig etc .Please see old threads for similar topic/discussion.
https://forums.oracle.com/forums/search.jspa?threadID=&q=Automate+AND+Rapid+AND+Clone&objID=c3&dateRange=all&userID=&numResults=15&rankBy=10001
https://forums.oracle.com/forums/search.jspa?threadID=&q=Automate+AND+AutoConfig&objID=c3&dateRange=all&userID=&numResults=15&rankBy=10001
Thanks,
Hussein -
Execute create trigger script in a procedure
Is it possible to create a trigger with pl/sql?
I have made a procedure thats makes the create or replace trigger statement.
(when i copy and past the statement the trigger is created succesvol)
How can i execute the create trigger statement on the end of the procedure?
Thanks.Well, then proceed with dynamic SQL.
Or, in my opinion much better: produce a SQL script with variables for table name and trigger name.
Then run this script with the appropriate values every time you have created a table.
Cheers,
Guido
Edited by: Guido on Oct 22, 2008 10:30 AM -
Calling sql script in plsql procedure
Hello,
I have a sql script named mytest.sql and i want to execute this from a stored procedure.
following is the contents of this script
spool d:\mytestsql.txt
select * from tab;
spool off
Actually i want my sql script to run daily to export some tables data.
I can execute this script from a sql prompt but i want to run it from enterprise manager.
I am using oracle 10gR2 on windows2000 system.
Any idea about scheduling the sql script to run automatically??
How to execute this sql script from a plsql procedure??
ThanksHi all,
Thanks for all the replies. I have found the solution with external procedures.
Following is the complete step by step guide.
1. Create the OSCommand Java Class using the following statement:
connect as any user:
create or replace and compile java source named oscommand as
import java.io.*;
public class OSCommand{
public static String Run(String Command){
try{
Runtime.getRuntime().exec(Command);
return("0");
catch (Exception e){
System.out.println("Error running command: " + Command +
"\n" + e.getMessage());
return(e.getMessage());
2. Create the following Wrapper Function using the following statement:
CREATE or REPLACE FUNCTION OSCommand_Run(Command IN STRING)
RETURN VARCHAR2 IS
LANGUAGE JAVA
NAME 'OSCommand.Run(java.lang.String) return int';
3. connect as sys
Execute dbms_java.grant_permission( 'FKHALID','SYS:java.io.FilePermission', '<<ALL FILES>>','execute');
execute dbms_java.grant_permission( 'FKHALID','SYS:java.lang.RuntimePermission', 'writeFileDescriptor', '*' );
execute dbms_java.grant_permission( 'FKHALID','SYS:java.lang.RuntimePermission', 'readFileDescriptor', '*' );
commit;
note: here fkhalid is the oracle user.
connect as fkhalid user:
Declare
expdp_cmd Varchar2(2000);
Begin
expdp_cmd := OSCommand_Run('cmd /c sqlplus fkhalid@mtcedwt/pwd @d:\ORA_DUMPS\mydbexp.sql');
DBMS_OUTPUT.Put_Line(expdp_cmd);
End;
In Unix
Set Serverout On
Declare
x Varchar2(2000);
Begin
x := OSCommand_Run('/home/test/myoscommand.sh')
DBMS_OUTPUT.Put_Line(x);
End;
I will check the dbms_scheduler also and will let you know the results.
Thanks -
File Ownership while executing sql script from stored procedure
We have a test_command.sql script which is spooling the result into a file. From database we have one Store Procedure(run_sql) which is
calling and executing the .sql script.
When we are calling the sql script directly from the database, i e SQL > @/dccops/test_command.sql it is creating the
file under the Ownership of OS user which is connected to the system.
The problem we are facing is when we are executing the stored procedure i e exec run_sql(), the file is creating under
Oracle User.
Could u please suggest me a solution inorder to create the output file under the user who is logged to the OS.First of all, your usage of IM speak is NOT appreciated. Please do not address anyone as if they were a 12-year old.
'Our Applcation is in C. So we have to call the procedure to run the sql script.'
This is just utter nonsense!
Oracle has Pro*C which allows Embedded SQL in C. There is also OCI (Oracle Call Interface) to call Oracle directly in C, and there is OCCI, to do the same in C++.
Apart from that, Oracle has Ole DB for Windows platforms, to allow for a .NET compatible interface to Oracle.
There is NO NEED AT ALL to call PL/SQL to run a SQL script.
Sybrand Bakker
Senior Oracle DBA -
Running a sql script from stored procedure
Hi everyone!
Has anybody tell me how to execute a sql script from a stored
procedure!
Thanks in advance!
Sasa>
Hi everyone!
Has anybody tell me how to execute a .sql file from a stored
procedure!
Thanks in advance!
Sasa Sorry, a .sql file!! -
Migrating SQL Script to stored procedure...
I created a SQL script file to run in SQLPlus to
generate a fixed-format text file (See EDI_PrepForSend
below)
How do i do the same thing in a stored
package/procedure? Can I utilize the
script I already have working? I need to
do it in a stored procedure because I need
to do dynamic queries.
TIA
Chuck Plinta
[email protected]
++++++++++++++++++++++++++
-- EDI_PrepForSend.sql
SET CONCAT '#';
SET ESCAPE OFF;
SET TERM OFF
-- Set's for flat file
SET NEWPAGE 0
SET SPACE 0
SET LINESIZE 50
SET PAGESIZE 0
SET ECHO OFF
SET FEEDBACK OFF
SET HEADING OFF
SET VERIFY OFF
SPOOL o:\ClientData\EDI-Send\&2\EDI-HCFA-Dtl-&1-&3.txt
COLUMN MC_Number FORMAT A15 HEADING MC_Number
COLUMN MC_Line_Number FORMAT A3 HEADING Ln#
COLUMN MC_CPT_Code FORMAT A5 HEADING Code
COLUMN MC_CPT_Modifier FORMAT A2 HEADING Mod
COLUMN MC_FDOS FORMAT A8 HEADING FDOS
COLUMN MC_LDOS FORMAT A8 HEADING LDOS
COLUMN MC_Line_Charge FORMAT 99999.99 HEADING Charge
SELECT MC.ICN MC_Number,
'???' MC_Line_Number,
MC.CPT_Code MC_CPT_Code,
MC.CPT_Modifier_1 MC_CPT_Modifier,
TO_CHAR(MC.First_DOS,'YYYYMMDD') MC_FDOS,
TO_CHAR(MC.Last_DOS,'YYYYMMDD') MC_LDOS,
MC.Charge MC_Line_Charge
FROM &1.Decision_Support DS,
&1.Medical_Claims MC
WHERE DS.Reprice_Status = 'U' AND
MC.CID = DS.CID
ORDER BY MC.ICN, MC.CID;
SPOOL OFFYou need to put your select statement in a parameterised function that returns a REF CURSOR. This is all well documented in the PL/SQL users guide.
Then you amend your SQL*PLUS script to call the function
VAR rc REFCURSOR
EXEC :rc := yr_function('&1')
PRINT rc
Cheers, APC -
Essbase report script in ODI procedure/variable
Hi,
Is there a way to call an existing report script in essbase in an ODI procedure/variable?
BEST!
Edited by: 867760 on Sep 1, 2011 2:39 PMYes you can use the essbase Java API and create a procedure either using Java, Jython or Groovy.
Cheers
John
http://john-goodwin.blogspot.com/ -
Running Unix script from stored procedure
At present, I run a unix script to export my data for backup using telnet. I would like my users to run the commands on their own without my help. My users do not know telnet (they have no IT knowledge). So, I plan to create a form using Developer/2000 and let them run the procedure thru a stored procedure.But, my problem is how can a stored procedure call a unix script?
Hi,
solution, used by me.
Create a stored procedure that produces a text file with utl_file. The content of the file is the script you want to execute on your Unix box.
On your Unix Box write a shell script that scans the utl_file_dir for Files. If a file is in, chmod 744 to grnt execute rights to it and execute it.
I have a example if you want.
Start the script with crontab or let it loop with a sleep inside.
HTH
Detlev -
Calling shell script from stored procedure.
Hi Everybody,
Could anyone tell me how to call a shell script from a stored procedure.
Thanks,
VasuYou would need to write a Java stored procedure that calls out to the underlying operating system. Tom Kyte has an example of this here
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:952229840241
Make sure that you're very aware of the security implications here, however. Your commands will run as the Oracle user on the host operating system, which makes it possible that a coding error and/or an attacker could do something like delete or corrupt Oracle data files, so you'll probably want to harden the code substantially.
Justin -
Problems with executing shell script within oracle procedure
I have procedure that's owned by Semantic user. This procedure calls job scheduler (owned by USER1) which in turn executes a shell script load_semantic.sh (owned by USER1).
Now, there is a shell script(checkCount.sh)inside of this one (owned by this USER1) that has following contents:
checkCount.sh
#!/bin/bash
MODEL=$1
sqlplus -S user/pass << EOF
whenever sqlerror exit 1;
set echo on
set verify off
MERGE INTO SEMANTIC.COUNT_STATISTICS s
USING (SELECT '$MODEL' AS MODEL, 0 AS NEW_COUNT, SYSDATE AS NEW_DATE, 0 AS OLD_COUNT, SYSDATE AS OLD_DATE FROM dual) t
on (s.MODEL = t.MODEL)
when not matched then
INSERT (s.MODEL, s.NEW_COUNT, s.NEW_DATE, s.OLD_COUNT, s.OLD_DATE)
VALUES (t.MODEL, t.NEW_COUNT, t.NEW_DATE, t.OLD_COUNT, t.OLD_DATE);
COMMIT;
UPDATE SEMANTIC.COUNT_STATISTICS SET MODEL = '$MODEL', NEW_COUNT = (SELECT COUNT(*) FROM TABLE(SEM_MATCH('{?s ?p ?o}',SEM_Models('$MODEL'),NULL,SEM_ALIASES(SEM_ALIAS('','http://VISION/DataSource/SEMANTIC#')),NULL)) ),NEW_DATE = SYSDATE,
OLD_COUNT = NEW_COUNT, OLD_DATE = NEW_DATE WHERE MODEL = '$MODEL' AND NEW_DATE = (select max(NEW_DATE) from SEMANTIC.COUNT_STATISTICS where MODEL = '$MODEL');
COMMIT;
exit;
EOF
So when I execute SEMANTIC.PROCEDURE:
SEMANTIC.PROCEDURE => USER1.JOBSCHEDULER =>USER1.load_semantic.sh =>USER1.checkCount.sh
It never populates the table SEMANTIC.COUNT_STATISTICS.
I tried giving all of the permissions but I am probably missing something...
Maybe fresh eyes can see something that I can't.I can't believe I am going to say this but the reason it was not working was because I removed oracle environment path from my script by mistake.
. /etc/profile.d/oracle.sh
Ugh...
Now it is working perfectly.
Btw, sqlplus does know about shell environment variables.
THANK YOU GUYS!!! YOU ARE THE BEST!!!!!!!!!!!!!!!!!!
I ONLY HAVE YOU TO TALK TO WHEN I AM STUCK ON A PROBLEM. -
Sample shell script - to run procedures and shell script
Hi ,
I would like run some procedures in one shell script which passing parameters as username/password@dbname.
1. Execute proce1
2.Execute proce3
3.Execute proc4
Can you please give some script/idea how we will create shell script . I am using SunSolaris Unix operating system.I would appreciate your help.
Regards,
Clarkuser10818198 wrote:
I would like run some procedures in one shell script which passing parameters as username/password@dbname.
1. Execute proce1
2.Execute proce3
3.Execute proc4
At a very basic level, based on the information you have provided, your shell script would be something like this:
sqlplus /nolog <<EOF
connect username/password@dbname
exec proce1;
exec proce2;
exec proce3;
exit
EOFBesides this, you could:
(1) Add the shebang at the top, to specify the shell you are using, e.g. #!/bin/ksh for the Korn shell etc.
(2) Ensure that "sqlplus" is recognized by the shell, by maybe running an "ora_env.sh" script that sets Oracle parameters. More likely, if you are using this Unix account for interaction with Oracle, then you may want to add the Oracle parameter information in your .profile or .bash_profile or .csh_profile etc. in the home directory.
(3) Run a few sqlplus commands right before calling those stored procedures, if needed. For example, if you want to exit from sqlplus (and Oracle) if an error occurs while executing any procedure, then add this -
whenever sqlerror exit 1Thus your script becomes:
#!/bin/ksh
# Ensure that Oracle parameters are set by this point
sqlplus /nolog <<EOF
connect username/password@dbname
whenever sqlerror exit 1
exec proce1;
exec proce2;
exec proce3;
exit
EOF(There are other settings as well; it really depends on your requirements.)
Can you please give some script/idea how we will create shell script . I am using SunSolaris Unix operating system.
How to create a shell script ? Well,
(1) Save the commands shown above in a file, using your favorite text editor. Name the file "my_script.sh" or "<a_better_name>.sh" etc. (or maybe ".ksh" for the Korn shell - it's just a best practice, the shell doesn't really care.)
(2) Make your script executable, like so -
$ chmod 744 myscript.sh(3) And then execute it -
$ ./myscript.sh- You could also execute the script in the current shell (as against a child shell) by doing this after Step (1):
$ . myscript.shHope that helps.
If there are specific questions, then post them here.
isotope
Maybe you are looking for
-
I've attempted to contact Adobe privately about this to no avail. They just sent me an email to let me know "we believe your issue is resolved and have therefore closed your case" but it isn't resolved. I want to open my bin and see my clips sorted i
-
Moving iTunes music folder/library to external HD
Hi all, and happy new year: Yeah, I know I should know how to do this, but ... I want to move all my music to an external HD and delete it from my MBP HD. I would like someone to steer me to the best resource for a primer on how to do this. Thanks in
-
Sharing anonimously a site in Sharepoint online 2013
Hi, I have created a subsite under the url https://mydomain.sharepoint.com/sites/mysite. It is a blog. I want to allow anonymous users (sending them a link) to access the site but I can't figure out the way to do that. I can do that with a document (
-
Hello Im sure somebody can help me with the question here. Im trying to create proxy client in ECC6 by using SE80 ( and press Enterprise service tag ), which is the path for 640. But I could not find creation button. Instead, system tells me Con
-
Email text files through plsql procedures
Hi, I have written a procedure that selects table data and writes a .txt file in delimitted format. After the file is created on the C drive of the server I want to attach the file in a email and send it to the recepients. I have used the built in pa