Call unix commands from stored procedures

My stored procedure requires to call unix commands HOW DO I DO IT?
null

i do not know pl sql but in java you can use:
Runtime.getRuntime().exec("YOUR UNIX COMMAND");
real example:
Runtime.getRuntime().exec("ls");
but you must be careful with using that...
especially if you want to wait till the process finishes..
rgds,

Similar Messages

  • Issue with Executing OS commands from Stored Procedure

    I am trying to execute the scripts provided at :
    http://github.com/xtender/XT_SHELL
    provided by xtender user.
    As required, I have asked my DBAs to grant privileges by executing the following scripts:
    Begin
      --change to needed permissions and execute
      dbms_java.grant_permission( 'ODS', 'SYS:java.io.FilePermission', '/var/factiva/ODS/bin/CVIM_Rpt_ExportCSVFile’, 'read,write,execute' );
    end;
    /where CVIM_Rpt_ExportCSVFile is my script residing in the Unix server where my Oracle is installed.
    The error I am facing when I try to execute the following command is:
    select * from table(xt_shell.shell_exec('/var/scripts/CVIM_Rpt_ExportCSVFile',100))
    Exception:the Permission (java.io.FilePermission /var/scripts/CVIM_Rpt_ExportCSVFile execute) has not been granted to ODS. The PL/SQL to grant this is dbms_java.grant_permission( 'ODS', 'SYS:java.io.FilePermission', '/var/scripts/CVIM_Rpt_ExportCSVFile', 'execute' )I have asked my DBA to also execute the following scripts: - But I still see the same error as above. I am not able to figure out whats going on. Can anyone pls help me out??
    EXEC Dbms_Java.Grant_Permission('ODS', 'SYS:java.lang.RuntimePermission', 'writeFileDescriptor', '');
    EXEC Dbms_Java.Grant_Permission(ODS', 'SYS:java.lang.RuntimePermission', 'readFileDescriptor', '');
    dbms_java.grant_permission( 'ODS', 'SYS:java.io.FilePermission', '/var/scripts/CVIM_Rpt_ExportCSVFile', 'execute' )

    DUPLICATE
    ===============================================================
    Issue with Executing OS commands from Stored Procedure
    ==============================================================

  • Run multiple unix commands from ODI procedure

    I want to run a series of unix commands from ODI procedure. I dont want to use Unix shell scripts. (I know that works).I am just trying to place the contents of the shell scripts in ODI procedure with Operating system as technology. But I am unable to execute the proecedure.
    For example below is a very small 3 line commands I would execute
    filename="/var/test.txt"
    ls -l $filename > /var/anotherfile.txt
    chmod 777 $filename
    I am not sure if there is any specific syntax that I have to follow for executing unix commands. Also I dont want to write a Jython and use os.system command as well.
    Appreciate any help on this

    First your original question... You can put more than one DOS command on a single line, simply separate each command with an ampersand (&). For example:
    mkdir c:\abc & cd abc & dir*
    Regarding your concerns about performance, well that would depend on exactly what you mean. Using CLIENT_HOST (or HOST on the server) simply opens a shell (DOS in this case) then passes your command to it. The performance of performing this action really isn't measurable. Basically you are just pressing a button and you should get a near immediate action. As for the performance of executing each command, that has nothing to do with Forms. Once the command is passed to the shell, the rest is a function of the shell and whatever command you passed.
    Having said that, if you were to write something sloppy like a loop (in pl/sql) which called CLIENT_HOST lots of times repeatedly, then yes there would be a performance problem because the pushing of the button will cause an exchange to and from the server and each cycle in the loop will do the same.
    So the answer to how performance is impacted will depend on what exactly you need to accomplish. If it is a single call to CLIENT_HOST, this should be fine.

  • How to execute unix command from ODI Procedure

    Hi,
    I am trying to execute below unix command from ODI Procedure (Command on Target tab) but I am getting the error "java.io.IOException: Cannot run program "cd": error=2, No such file or directory" but when I try to execute the same command using OdiOSCommand, it is executing successfully. I don't want to use shell script to execute this command. Is there any specific syntax am I missing to execute this command from ODI procedure?
    cd /project3/tmt/;ls *.dmp > dmplist.lst
    Please help me on this...
    Thanks
    MT

    Hi nahlikh,
    Thank you for the reply.
    I used below command in Procedure but still getting the same error as "java.io.IOException: Cannot run program "OdiOSCommand": error=2, No such file or directory".
    OdiOSCommand "-COMMAND=cd /project3/tmt/;ls *.dmp > dmplist.lst"
    as I mentioned earlier if I use the command cd /project3/tmt/;ls *.dmp > dmplist.lst in OdiOSCommand tool it is executing successfully without any issues.
    any thoughts appreciated to get a solution for this issue.
    Thanks
    MT

  • Call Unix Command From Reports Using Java

    Hi,
    Could somebody please show me a sample coding to call Unix command from 10g report using java?
    In metalink doc id 361857.1 does not show much.
    Thanks,
    neemin

    Hi,
    I have a problem with synchronization of the java commands.
    In the Before Parammeter Form trigger, I have:
    function BeforePForm return boolean is
    rt ORA_JAVA.JOBJECT;
    proc ORA_JAVA.JOBJECT;
    v_txt varchar2(32000);
    i integer := 0;
    v_cd_modulo int;
    v_arqlog text_io.file_type;
    cursor c_evento is
    select codigo,
    nome
    from
    (select e.cd_evento || e.cd_edicao codigo
    ,nm_evento nome
    from grh_ev_evento e
    where e.CD_GRUPO in (select cd_grupo
    from grh_ev_adm
    where cd_usuario = (select cd_usuario
    from usuario
    where login_usuario = :AUTHID)))
    order by substr(nome, 11);
    begin
    -- Create the context for logged user
    if instr(upper(nvl(:AUTHID,'RWCLIENT')),'RWCLIENT') > 0 then
    :AUTHID := :SSO_USUARIO;
    end if ;
    TCEENV.SET_TCEENV(:AUTHID);
    if PK_SCA.SCA_GET_USER_RIGHTS(:sca_module_name, :AUTHID) IS NULL then
    srw.message(100, 'Access denided!');
    return (FALSE);
    end if;
    -- Create file in Report Server (UNIX)
    v_txt := '<BR>' || htf.formSelectOpen('P_EV_EDICAO', 'Evento: ');
    :p_file := '/u03/SCAWEB/repout/' || :sca_module_name || '_' ||
    pk_sca.sca_encrypt(:AUTHID || to_char(systimestamp, 'ss.ff'));
    v_arqlog := text_io.fopen (:p_file, 'A');
    text_io.put_line (v_arqlog, v_txt);
    for reg in c_evento loop
    i := i + 1;
    if i = 1 then
    v_txt := '<OPTION SELECTED VALUE="' || reg.codigo || '">' || reg.nome;
    else
    v_txt := '<OPTION VALUE="' || reg.codigo || '">' || reg.nome;
    end if;
    text_io.put_line (v_arqlog, v_txt);
    end loop;
    v_txt := '</SELECT></CENTER></form></BODY> </HTML>';
    text_io.put_line (v_arqlog, v_txt);
    text_io.fclose (v_arqlog);
    SRW.SET_AFTER_FORM_HTML(SRW.FILE_ESCAPE, :p_file);
    rt := RUNTIME.GetRuntime();
    proc := RUNTIME.exec(rt,'rm ' || :p_file);
    return (TRUE);
    end;
    The problem is that there isn't a "synchronize" command, and the
    RUNTIME.exec(rt,'rm ' || :p_file) don't works (it does nothing) because
    the SRW.SET_AFTER_FORM_HTML has a large delay and the following
    command is ignored.
    How can I solve it?
    thanks,
    lmprestes

  • How to execute Operating System commands from Stored procedure.

    Any help on how to execute Operating System commands from stored procedures will be appreciated.
    Nanditha.

    Search the forums for 'External Procedure' and you will find example code that has been posted before.

  • Calling DTS package from Stored Procedure

    I am getting error calling DTS package from CF.
    So i want to call DTS package from SQL Server Stored
    Procedure.
    DTS package create text file. So no need of input or output
    parameter.
    What is the syntax?.
    thanks for ur help.

    Ted Kruger explains how this can be done in his blog post
    Run SSIS Package from Stored Procedure
    For every expert, there is an equal and opposite expert. - Becker's Law
    My blog

  • Calling UNIX command from PL/SQL Procedure

    Is there a way to call a UNIX command (exa. ls) from within a PL/SQL stored procedure? Looking through the various packages, I didn't see anything that would give me this ability.
    I also looked through all the previous questions and nothing looked encouraging.
    Thanks in advance,
    Russ

    Russ,
    I thought I'd read a similar question awhile ago and did a search on the word host in this forum and found the following from July 9th that might help you:
    http://technet.oracle.com:89/ubb/Forum88/HTML/001611.html
    In that post I think the link listed by Barbara Boehmer in has changed to:
    ]http://asktom.oracle.com/pls/ask/f?p=4950:8:24579::NO::F4950_P8_DISPLAYID,F4950_P8_CRITERIA:16212348050,{host}
    It looks like they give solutions for Oracle 7, 8 and 8i.
    Good site Barbara, I've added it to my bookmarks.
    Hope this helps.

  • 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,
    Vasu

    You 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

  • Executing a Operating System command from Stored Procedure ??

    I want to execute a Operating System command from a PL/SQL Stored Procedure, can anyone suggest me how can I do this ??
    I am on Sun-Solaris with Oracle 8.1.7 database.
    Please do email me at [email protected]
    Thanks in Advance,
    Ramesh L.

    Are you using a webserver? If so, you could make your operating system script into a CGI program, then execute it from pl/sql using utl_http.request.

  • How to call 'C' programs from stored procedures?

    Hi
    Did anybody tried to call 'C' programs
    from oracle stored procedures?
    If anybody knows, can you please send
    how to configure the listener.ora and
    tnsnames.ora. If its possible post all the
    information from the begining with examples.
    thanks....

    Oracle JDBC did not support return a result set, if you are using Oracle 9i, you can use pipeline function, then using the TABLE() function the get the row.
    Good Luck.
    Welcome to http://www.anysql.net/en/

  • Calling Oracle Reports from stored procedures

    Hi ,
    Can anybody tell me whether this is possible and if so, how it can be done. Thanks for your help.
    Regards,
    Deepa

    Oracle Forms allows you to easily integrate Oracle Reports into your
    applications. However, on the Macintosh, it is not possible to use
    the normal Oracle Reports runtime to generate ASCII text files. In
    order to allow ASCII text files to be generated with Oracle Reports
    on the Macintosh, the Reports<TEXT> Runtime applications was
    developed. This version of the runtime only allows you to generate
    text files and should not be used for other purposes.
    While the Reports<TEXT> Runtime application has been provided, there
    is no built in integration with Forms. This bulletin explains a
    method which you can use integrate these two applications with little
    effort. In order to use this method, you will need the following
    items installed on your computer:
    * Oracle Forms 4.0
    * Oracle Reports 2.0
    * Oracle Command 1.0
    * AppleScript 1.1. This is available as part of the Macintosh
    Operating System version 7.5 as well as with certain 3rd party
    applications.
    Because the only way to use the Reports<TEXT> Runtime application is
    through Oracle Command, we will be using Oracle Command to run the
    Reports<TEXT> Runtime application. However, we need some way to
    communicate with Oracle Command which report we would like to run and
    what parameters we would like to pass in to Reports. To accomplish
    this goal, an AppleScript application will be used. Forms can use
    AppleEvents (Apple's method for inter-application communication) to
    communicate with this AppleScript application which can then create
    an Oracle Command script file to run. So, the summary of events
    which will take place are as follows:
    1. Forms dynamically creates a command line to run the
    Reports<TEXT> Runtime application.
    2. Using AppleEvents, Forms communicates this command line to the
    AppleScript application which writes out an Oracle Command
    script file.
    3. The AppleScript application communicates with Oracle Command and
    tells it to run the script which it just created.
    4. Oracle Command runs the script which invokes the Reports<TEXT>
    Runtime application.
    1. Creating the AppleScript Application
    The core of this solution is the AppleScript Application. While it
    is not necessary for you to be familiar with AppleScript, it will
    help tremendously in your understanding of how everything works.
    Here we provide you with an AppleScript which provides the
    functionality we need to implement our procedure.
    Note: This AppleScript is designed to work with the Macintosh
    Operating System version 7.5. It should work with earlier
    versions of the Operating System, but no guarantees are
    made. Furthermore, there are known problems with the version
    of AppleScript provided with version 7.1.2 of the Operating
    System which will cause your machine to crash when this
    script is executed. These problems with AppleScript were
    corrected for the version 7.5 release of the Operating System.
    -- This AppleScript Application is responsible for being a
    -- "go-between" between Oracle Forms and Oracle Command. It is
    -- responsible for both dynamically creating Oracle Command script
    -- files and disposing of these files.
    -- NOTE: This AppleScript Application was written for the Macintosh
    -- Operating System version 7.5. It has not been tested
    -- on any other version of the Macintosh Operating
    -- System.
    -- Author
    -- ======
    -- Doug Bitting
    -- Oracle Worldwide Technical Support
    -- Apple Desktop Products Group
    -- Date: 21-MAR-95
    -- The syntax "on <<...>> args" is how you setup an AppleScript to
    -- accept AppleEvents.
    -- Be careful, the << and >> characters are option-\ and option-|
    -- respectively. They are not two less-than signs and two
    -- greater-than signs.
    on <<event R20Trunt>> cmdScript
    -- First, let's construct a, hopefully, unique file name
    set dt to ((current date) as string)
    set hr to (word 5 of dt)
    set mn to (word 6 of dt)
    set sec to (word 7 of dt)
    set fName to (hr * 3600 + mn * 60 + sec as string)
    -- For this example, we will put all dynamically constructed
    -- script files onto the desktop.
    set tFold to (path to desktop)
    set fName to (tFold & "tmp." & fName as string)
    -- set up a mnemonic for the Return character
    set cr to (ASCII character 13)
    try
    -- open our Oracle Command script file
    -- The sequence <opt-l> at the end of the following line
    -- should be type in as an option-l (that is, a lowercase L).
    set fRef to (open for access file fName with write <opt-l>
    permission)
    -- Now, write the Oracle Command command line which was
    -- passed to us via AppleEvents.
    -- The sequence <opt-l> at the end of the following line
    -- should be type in as an option-l (that is, a lowercase L).
    write (cmdScript & cr) starting at <opt-l>
    ((get eof fRef) + 1) to fRef
    -- Now we have to also ask Oracle Command to let us know
    -- when it is finished with the script file we are
    -- creating. Basically, we are asking Oracle Command to
    -- use AppleEvents to let us know when to throw away the
    -- file we are creating
    -- The sequence <opt-l> at the end of the following lines
    -- should be type in as an option-l (that is, a lowercase L).
    write ("host SENDAE aplt R20T remv ---- t \"" & fName <opt-l>
    & "\";" as string) starting at <opt-l>
    ((get eof fRef) + 1) to fRef
    -- close the Oracle Command script file
    close access fRef
    -- Now that we have setup the temporary file,
    -- tell Oracle Command to execute it.
    tell application "Oracle Command 1.0"
    runscript fName
    end tell
    -- You can put some error handling here if you'd like.
    end try
    end <<event R20Trunt>>
    -- This is the AppleEvent handler to clean up when we are done. It
    -- simply throws the temp file into the trash can.
    -- Be careful, the << and >> characters are option-\ and option-|
    -- respectively. They are not two less-than signs and two
    -- greater-than signs.
    on <<event R20Tremv>> fName
    tell application "Finder"
    move (fName as alias) to (path to trash)
    end tell
    end <<event R20Tremv>>
    2. Setting Up Forms
    It is useful to setup a PL/SQL Program Unit to hide the details
    behind running the Text Runtime. Here is a suggested PL/SQL Program
    Unit for you to use:
    -- The following procedure is used to hide some of the details in
    -- using the AppleScript Application. It accepts 4 arguments:
    -- * The report name
    -- * The name of the output file
    -- * The parameters you would like to pass in. These need to be
    -- formatted just as if you were calling reports from a
    -- command line.
    -- * A connect string for Reports<TEXT> Runtime to connect with.
    procedure run_text_report (
    rName in char,
    oName in char,
    params in char,
    cString in char) is
    cLine varchar2(1000);
    begin
    cLine := 'execute r20text module='&#0124; &#0124;rname;
    cLine := cLine &#0124; &#0124; ' userid='&#0124; &#0124;cString;
    cLine := cLine &#0124; &#0124; ' paramform=no batch=yes';
    cLine := cLine &#0124; &#0124; ' destype=file desname='&#0124; &#0124;oname;
    cLine := cLine &#0124; &#0124; ' desformat=dflt.prt '&#0124; &#0124;params&#0124; &#0124;';';
    host('SENDAE aplt R20T runt ---- t "'&#0124; &#0124;cLine&#0124; &#0124;'"');
    -- NOTE: in the above host() command, the series of quotes at the
    -- end reads as follows: double-quote, single-quote, vertical
    -- bar, vertical bar, the word cLine, vertical bar, vertical
    -- bar, single-quote, double-quote, single-quote.
    end;
    Here is an example of how I can use the above procedure. In a
    WHEN-BUTTON-PRESSED trigger, I might have:
    declare
    reportName varchar2(16);
    outputName varchar2(64);
    paramVals varchar2(64);
    connectStr varchar2(16);
    begin
    -- We want to run the report named "myreport". The output from this
    -- report should go into a file named "output.txt" located in the
    -- "Reports" directory on my hard drive. This report accepts two
    -- parameters: p_start_date and p_end_date. The connect string for
    -- the database I am using is simply "scott/tiger"
    -- Setup some variables to hold all the information I want to pass
    -- in to run_text_report(). This information is put into variables
    -- for readability.
    reportName := 'myreport';
    outputName := 'HD:Reports:output.txt';
    paramVals := 'p_start_date=''01-MAR-95'' p_end_date=''31-MAR-95''';
    connectStr := 'scott/tiger';
    -- Run the report
    run_text_report(reportName, outputName, paramVals, connectStr);
    end;
    3. Putting the pieces together
    In order for this solution to function, you need to make sure that
    both your AppleScript application and Oracle Command are running when
    you make a call to run_text_report(). It is possible for you to
    launch Oracle Command from within Oracle Forms with the following
    line of code:
    host('LAUNCHID oBTL');
    If you place the above line of code in a WHEN-NEW-FORM trigger, you
    can assure that Oracle Command will be running when your form is
    launched.
    It is also possible for you to have Oracle Forms launch your
    AppleScript application. However, in order for you to do this, you
    need to be very familiar with the Macintosh Operating System, how to
    change the creator type of a file, and know what effects that change
    can produce. If you do not know how to change the creator type of
    your AppleScript application or are not comfortable doing so, you
    should simply document that your users need to make sure to launch
    your AppleScript application before trying to use your Form.
    However, if you know how to change the creator type of your
    AppleScript application and are comfortable doing so, here are the
    steps you will need to take to have Oracle Forms launch your
    AppleScript application for you:
    * Change the creator type of your AppleScript application to
    something unique.
    * Modify the run_text_report() procedure. You need to change the
    four character sequence "aplt" found in the host() command to the
    new creator type of your AppleScript application.
    * Add the line host('LAUNCHID <your new creator type>'); to your
    WHEN-NEW-FORM trigger or to whichever trigger you placed the
    host('LAUNCHID oBTL'); statement.
    There is one significant difference between RUN_PRODUCT and this
    solution. With RUN_PRODUCT, you have the option of specifying
    whether or not the call should be synchronous or asynchronous.
    However, the call to run_text_report() will always be asynchronous.
    <BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by Deepa Pai:
    Hi ,
    Can anybody tell me whether this is possible and if so, how it can be done. Thanks for your help.
    Regards,
    Deepa <HR></BLOCKQUOTE>
    null

  • Calling Java Methods from Stored Procedures

    Can I call Java Methods from Oracle Stored Procedures? I have a Java framework that logs events and would like to reuse it for logging events that occur in stored procedures.
    null

    You need to publish java class methods to plsql.
    Attached below is some information.
    Although both PL/SQL modules and Java classes are stored in the database
    and are managed by many of the same mechanisms, each of them resides in
    its own namespace. Therefore, Java methods are not accessible from SQL
    and PL/SQL by default. In order to expose Java methods to the SQL and
    PL/SQL engines, first publish that Java method to the SQL namespace using
    a 'Call Spec'.
    Note: A 'Call Spec' does not create an additional layer of
    execution so there is no performance penalty incurred.
    A 'Call Spec' is simply a syntactical mechanism used to
    make a method known in the SQL namespace.
    The SQL name established by the 'Call Spec' can be top-level or packaged.
    The syntax differs only slightly and is consistent with that used for
    PL/SQL procedures and packages. For more information on the exact
    syntax, see the references listed in 'Related Topics'.
    In general, a top-level procedure 'Call Spec' takes the form:
    CREATE OR REPLACE PROCEDURE procname ( pname mode ptype, ... )
    AS LANGUAGE JAVA NAME 'javaname ( javatype, ... )';
    Where: procname is the SQL name you wish to publish
    pname is the name for a parameter to procname
    mode is the parameter mode (i.e. IN, OUT, IN OUT)
    ptype is a valid SQL type (e.g. NUMBER, CHAR, etc.)
    javaname is the fully qualified name of the Java method
    javatype is a Java type for the corresponding parameter
    Likewise, a top-level function 'Call Spec' takes the form:
    CREATE OR REPLACE FUNCTION fname ( pname mode ptype, ... ) RETURN rtype
    AS LANGUAGE JAVA NAME 'javaname ( javatype, ... ) return javatype';
    Where: fname is the SQL name you wish to publish
    rtype is the SQL return type of the function
    Note: Within the NAME clause, everything within quotes is case
    sensitive. For example, if the keyword 'return' is in all
    CAPS, this Call Spec will not compile.
    Other optional parts of this syntax have been omitted here for simplicity.
    Additional examples in subsequent sections illustrate some of these options.
    eg
    CREATE PROCEDURE MyProc (rowcnt IN NUMBER, numrows OUT NUMBER)
    AS LANGUAGE JAVA NAME 'MyClass.MyMethod(int, int[])';
    There are several important things to note here:
    1.) The 'Call Spec' for a JSP must be created in the same schema as the
    corresponding Java class that implements that method.
    2.) IN parameters are passed by value. This is the only parameter mode
    available in Java. OUT parameters, therefore, must be passed as single
    element arrays in order to emulate pass by reference.
    3.) Parameter names do not need to match, but the number and types of
    the parameters must match (with just one exception - see item 5 below).
    Oracle 8i supports conversions between an assortment of SQL and Java.
    See the references listed in 'Related Topics' for additional information.
    4.) Primitive types (e.g. int, float, etc.) are not required to be fully
    qualified with any package name. However, standard Java object types
    (e.g. String, Integer, etc.) as well as any user defined object types
    (e.g. like those generated by JPublisher) must be prefixed with a
    corresponding package name (e.g. java.lang) if applicable.
    5.) The 'main' method which takes a single String[] parameter can be
    mapped to any PL/SQL procedure or function which takes some number
    of VARCHAR2 or CHAR type IN parameters. For example, the java method:
    public static void main ( String[] args ) { ... }
    can be mapped to each of the following:
    PROCEDURE MyProc2 ( arg1 IN CHAR ) ...
    PROCEDURE MyProc3 ( arg1 IN CHAR, arg2 IN VARCHAR2 ) ...
    PROCEDURE MyProc4 ( arg1 IN VARCHAR2, arg2 IN VARCHAR2 ) ...
    and so forth. Parameters map to the corresponding element of the String
    array (e.g. arg1 -> args[0], arg2 -> args[1], etc.).
    null

  • Executing SQLPLUS command from Stored Procedure

    Hi,
    I am trying to execute the SQLPLUS command (CONNECT) from the stored procedure.
    It is throwing below error message.
    Stored Procedure:
    SQL> select user from dual
    2 ;
    USER
    SYS
    SQL> create or replace
    2 PROCEDURE PROCEDURE1 AS
    3 BEGIN
    4 sqlplus sys/sys@D as sysdba;
    5 --execute immediate 'create user 'kkk' identified by 'kkk';
    6 END PROCEDURE1;
    7 /
    Warning: Procedure created with compilation errors.
    SQL> show err
    Errors for PROCEDURE PROCEDURE1:
    LINE/COL ERROR
    3/9 PLS-00103: Encountered the symbol "SYS" when expecting one of the
    following:
    := . ( @ % ;
    The symbol ":=" was substituted for "SYS" to continue.
    3/22 PLS-00103: Encountered the symbol "AS" when expecting one of the
    following:
    . ( * @ & = - + ; < / > at in is mod remainder not rem
    <an exponent (**)> <> or != or ~= >= <= <> and or like LIKE2_
    LIKE4_ LIKEC_ between || member SUBMULTISET_
    The symbol ". was inserted before "AS" to continue.
    Please let me know whether it is possible to do or not.
    If there is possiblility how can does this be done?
    Edited by: NGK246 on Aug 28, 2012 2:21 AM

    NGK246 wrote:
    Hi,
    I am trying to execute the SQLPLUS command (CONNECT) from the stored procedure.
    It is throwing below error message.
    It would not. It will always throw an error. SQLPLUS is a Utility and not a Command/Construct, that it would be available for a Stored Procedure
    >
    SQL> select user from dual
    2 ;
    USER
    SYSWhich Database are you onto? Is it DMIP?
    SQL> create or replace
    2 PROCEDURE PROCEDURE1 AS
    3 BEGIN
    4 sqlplus sys/sys@DMIP as sysdba;
    5 --execute immediate 'create user 'kkk' identified by 'kkk';
    6 END PROCEDURE1;
    7 /
    Warning: Procedure created with compilation errors.
    SQL> show err
    Errors for PROCEDURE PROCEDURE1:
    LINE/COL ERROR
    3/9 PLS-00103: Encountered the symbol "SYS" when expecting one of the
    following:
    := . ( @ % ;
    The symbol ":=" was substituted for "SYS" to continue.
    3/22 PLS-00103: Encountered the symbol "AS" when expecting one of the
    following:
    . ( * @ & = - + ; < / > at in is mod remainder not rem
    <an exponent (**)> <> or != or ~= >= <= <> and or like LIKE2_
    LIKE4_ LIKEC_ between || member SUBMULTISET_
    The symbol ". was inserted before "AS" to continue.
    Please let me know whether it is possible to do or not.
    If there is possiblility how can does this be done?If you are at DMIP, you need not Login again. You can Login Manually to the Database and Execute the Procedure (in which you intend to create a User 'kkk').
    However, if you are trying to Create a User in a Different Database, You will first require a DB Link to exist to connect to the Remote Database. You will also require Explicit privileges to create any user (Although I am not sure if you can create User onto a different Database.)
    I would like to ask you, why are you creating a User on a Remote database? Can you not execute the same procedure on the Remote database and create User? Also, you are using SYS login to perform the activity. Ideally it should not be allowed. You must create a user and grant DBA rights to perform such activities.

Maybe you are looking for