Can we teminate running procedure dynamically

Hi
I am running procedure where it is taking 2 hrs. I have to teminate it if it takes more than 1 hour for execution.
How do I implement this.

The Large Hammer Approach simply says, "kill it!". This is done via the SQL alter system kill session '<sid>,<serial>'.
There are two very basic problems with this approach. It needs DBA privs as the ALTER SYSTEM command is endowed with godlike powers and need a godlike user to wield the command. It is just plain wrong to allow an application (or end-users/developers) to wield this command indiscriminately.
Killing the process does not solve the problem. It addresses the symptom. It does not fix anything.
That process runs for a good reason, right? There is some business reason that it is addressing. Else why have the process in the first place.
Killing that process means that business need is not satisfied.
So to address the problem, you need to
a) identify the actual business need the process needs to satisfy
b) determine whether the current process does it effectively/efficiently/optimally
c) re-write/re-design it if needed
d) identify bottleneck/performance issues with the process
e) resolve these
Obviously, not as easy as wielding The Large Hammer. But using a hammer to drive in screws makes an ugly mess.. and you risk serious injury to a thumb or finger or three..
It comes down to using the right tool for the job. Killing the process does not sound like the right tool.

Similar Messages

  • How can i create stored procedures dynamically?

    I have tried to create a stored procedure building a string with the PL/SQL code needed to create the procedure. If i run the code using SQL+ works fine, but using the following code:
    Public Sub CreateStoredProcedure()
    Dim strSql As String
    strSql = "CREATE OR REPLACE PACKAGE OPSPRUEBAS AS " & vbCrLf
    strSql = strSql & vbTab & "PROCEDURE consulta (resultado OUT VARCHAR2); " & vbCrLf
    strSql = strSql & "END OPSPRUEBAS; " & vbCrLf
    strSql = strSql & "/ " & vbCrLf
    strSql = strSql & ". " & vbCrLf
    strSql = strSql & "CREATE OR REPLACE PACKAGE BODY OPSPRUEBAS AS " & vbCrLf
    strSql = strSql & "PROCEDURE consulta (resultado OUT VARCHAR2) IS " & vbCrLf
    strSql = strSql & "oc_ref" & vbTab & vbTab & "REF Content_Ontology; " & vbCrLf
    strSql = strSql & "oc" & vbTab & vbTab & "Content_Ontology; " & vbCrLf
    strSql = strSql & "ori" & vbTab & vbTab & "role_def; " & vbCrLf
    strSql = strSql & "ori_ref" & vbTab & vbTab & "ref role_def; " & vbCrLf
    strSql = strSql & "conce" & vbTab & vbTab & "concept; " & vbCrLf
    strSql = strSql & "conce_ref" & vbTab & "REF concept; " & vbCrLf
    strSql = strSql & "b" & vbTab & vbTab & "boolean; " & vbCrLf
    strSql = strSql & "BEGIN " & vbCrLf
    strSql = strSql & "b:=false; " & vbCrLf
    strSql = strSql & "select REF(oi) into ori_ref from rol_table oi where oi.name='Playing'; " & vbCrLf
    strSql = strSql & "select deref(ori_ref) into ori from dual; " & vbCrLf
    strSql = strSql & "select REF(oi) into oc_ref from c_ontologies oi where oi.web_source_prop=websource('FilmContentOntology'); " & vbCrLf
    strSql = strSql & "select deref(oc_ref) into oc from dual; " & vbCrLf
    strSql = strSql & "if oc.if_has_co_class('Film')='TRUE' AND " & vbCrLf
    strSql = strSql & "oc.if_has_co_class('theater')='TRUE' AND " & vbCrLf
    strSql = strSql & "oc.if_has_co_relationship('is_scheduled')='TRUE' AND " & vbCrLf
    strSql = strSql & "oc.if_has_co_attributes('Film', lista('is_scheduled', 'title', 'actor'))='TRUE' AND " & vbCrLf
    strSql = strSql & "oc.if_has_co_attributes('theater', lista('theatername', 'address', 'email'))='TRUE' " & vbCrLf
    strSql = strSql & "then resultado:='FilmContentOntology'; " & vbCrLf
    strSql = strSql & "else resultado:='No Existe'; " & vbCrLf
    strSql = strSql & "end if; " & vbCrLf
    strSql = strSql & "END consulta; " & vbCrLf
    strSql = strSql & "END OPSPRUEBAS; " & vbCrLf
    strSql = strSql & "/ " & vbCrLf
    strSql = strSql & ". " & vbCrLf
    strSql = strSql & "COMMIT;" & vbCrLf
    TextBox2.Text = strSql
    'Dim myConnectionString As String = "User Id=system;Password=daniel;Data Source=websogo;"
    'Dim oraConn As Oracle.DataAccess.Client.OracleConnection = New Oracle.DataAccess.Client.OracleConnection(myConnectionString)
    Dim myCmd As New System.Data.OleDb.OleDbCommand()
    Dim MyConnection As New System.Data.OleDb.OleDbConnection()
    MyConnection.ConnectionString = "Provider=MSDAORA;Data Source=websogo;password=daniel;User ID=system"
    MyConnection.Open()
    'oraConn.Open()
    myCmd.Connection = MyConnection
    myCmd.CommandType = CommandType.Text
    myCmd.CommandText = strSql
    myCmd.ExecuteNonQuery()
    'Dim e As Oracle.DataAccess.Client.OracleException
    'Try
    ' myCmd.ExecuteNonQuery()
    'Catch e
    ' Dim error1 As Oracle.DataAccess.Client.OracleError
    ' error1 = e.Errors.Item(0)
    ' Textbox3.Text = error1.Source & " " & error1.Message
    'End Try
    MyConnection.Close()
    End Sub
    I've tried using Microsoft ODP, OLEDB and Oracle's ODP.NET
    Also tried to catch any error but there are no errors!
    Has anybody achived a successful dynamically stored procedure creation using .net?
    thanks in advance
    Dan

    I'm trying to create Stored Procedures via .NET and able to do so but when I look in Oracle Enterprise Manager Console, the Stored Procedures are marked as INVALID... If I edit the Stored Procedure (i.e. delete a space or something minor) and SAVE then it compiles fine.....
    Any ideas ????
    will be using this against 9i & 10g db

  • How can I execute Stored Procedures in PARALLEL and DYNAMICALLY ?

    Hi 
    I have a stored procedure. It can be executed like this
    exec test @p = 1;
    exec test @p = 2
    exec test @p = n;
    n can be hundred.
    I want the sp being executed in parallel, not sequence. It means the 3 examples above can be run at the same time.
    If I know the number in advance, say 3, I can create 3 different Execution SQL Tasks. They can be run in parallel.
    However, the n is not static. It is coming from a table. 
    How can I execute Stored Procedures in PARALLEL and DYNAMICALLY ?
    I think about using script task. In the script, I get the value of n, and the list of p, from the table, then running a loop with. In the loop, I create a threat and in the threat, I execute the sp like : exec test @p = p. So the exec test may
    be run parallel. But I am not sure if it works.
    Any idea is really appreciated.

    Hi nam_man,
    According to your description, you want to call stored procedures in parallel, right?
    In SSIS, we can create separate jobs with different stored procedures, then set the same schedule to kick the jobs off at the same time. In this way, we should be careful to monitor blocking and deadlocking depending on what the jobs are doing.
    We can also put all stored procedures in SSIS Sequence container, then they will be run in parallel.
    For more information about SSIS job and Sequence container, please refer to the following documents:
    http://www.mssqltips.com/sqlservertutorial/220/scheduling-ssis-packages-with-sql-server-agent/
    https://msdn.microsoft.com/en-us/library/ms139855(v=sql.110).aspx
    If you have any more questions, please feel free to ask.
    Thanks,
    Wendy Fu
    Wendy Fu
    TechNet Community Support

  • How to run oracle stored procedure dynamically

    How can I call a stored procedure dynamically. My requirement is to call a stored procedure based on user selection on a parameter screen. I do not want to hardcode proocedure name, but rather call dynamically.
    If I use the same methodology as of running dynamic sql's Iam getting an error.
    "invalid SQL statement after call to procedure"
    v_cursorid INTEGER;
    v_cnt NUMBER;
    v_sqlstring VARCHAR2(2000);
    v_sqlstring := 'execute insert_job_status('''||TO_CHAR(SYSDATE,
    'dd-mon-yyyy HH:mi:ss')||''');';
    v_cursorid := dbms_sql.open_cursor;
    dbms_sql.parse(v_cursorid, v_sqlstring, dbms_sql.v7);
    --cnt        := dbms_sql.execute(v_cursorid);
    dbms_sql.close_cursor(v_cursorid);

    EXECUTE is a SQL*Plus command. try
    v_sqlstring := 'begin  insert_job_status('''||TO_CHAR(SYSDATE,
    'dd-mon-yyyy HH:mi:ss')||'''); end;';Cheers, APC

  • Calling procedure dynamically, from different schema, permissions issue

    Hi,
    I have a 'master_user' schema that needs to run DDL on a 'secondary_user' schema.
    There appears to be some kind of permissions subtlety that I'm missing. Here are the simplified steps to create, test and troubleshoot:
    Secondary schema has a procedure defined:
    -- Run as SYSTEM (at build time)
    CREATE OR REPLACE PROCEDURE secondary_user.execute_immediate(p_sql_statement IN VARCHAR2)
    IS
    BEGIN
        EXECUTE IMMEDIATE p_sql_statement;
    END;
    GRANT EXECUTE ON secondary_user.execute_immediate TO master_user;
    I then want to call this procedure from master_user to execute DDL dynamically in secondary_user.
    - Run as master_user
    BEGIN
        EXECUTE IMMEDIATE ' BEGIN secondary_user.execute_immediate(''DROP TABLE test1''); END;';
    END;
    ERROR at line 1:
    ORA-00942: table or view does not exist
    ORA-06512: at SECONDARY_USER.EXECUTE_IMMEDIATE", line 5
    ORA-06512: at line 1
    ORA-06512: at line 2
    TROUBLESHOOTING SO FAR:
    Now I can call this procedure directly:
    -- As master_user
    EXEC secondary_user.execute_immediate('drop table test1')
    PL/SQL procedure successfully completed.
    I can call the wrapped procedure as different users:
    -- As secondary_user
    BEGIN
        EXECUTE IMMEDIATE ' BEGIN secondary_user.execute_immediate(''DROP TABLE test1''); END;';
    END;
    PL/SQL procedure successfully completed.
    -- As SYSTEM
    BEGIN
        EXECUTE IMMEDIATE ' BEGIN secondary_user.execute_immediate(''DROP TABLE test1''); END;';
    END;
    PL/SQL procedure successfully completed.
    Can you shed any light on this behaviour? The master_user clearly has permission to run the procedure, but it cannot see it from within an anonymous block. However SYSTEM can so what permission does SYSTEM have that master_user does not?
    Much appreciated,
    Si

    Something doesn't add up:
    SCOTT@orcl > create user secondary_user
      2  identified by secondary_user
      3  default tablespace users
      4  quota unlimited on users
      5  /
    User created.
    SCOTT@orcl > grant create session to secondary_user
      2  /
    Grant succeeded.
    SCOTT@orcl > create user master_user
      2  identified by master_user
      3  default tablespace users
      4  quota unlimited on users
      5  /
    User created.
    SCOTT@orcl > grant create session to master_user
      2  /
    Grant succeeded.
    SCOTT@orcl > CREATE OR REPLACE PROCEDURE secondary_user.execute_immediate(p_sql_statement IN VARCHAR2)
      2
      3  IS
      4
      5  BEGIN
      6
      7      EXECUTE IMMEDIATE p_sql_statement;
      8
      9  END;
    10
    11  /
    Procedure created.
    SCOTT@orcl > GRANT EXECUTE ON secondary_user.execute_immediate TO master_user;
    Grant succeeded.
    SCOTT@orcl >
    SCOTT@orcl > create table secondary_user.test1(n number)
      2  /
    Table created.
    SCOTT@orcl > connect master_user@orcl
    Enter password:
    Connected.
    MASTER_USER@orcl > BEGIN
      2
      3      EXECUTE IMMEDIATE ' BEGIN secondary_user.execute_immediate(''DROP TABLE test1''); END;';
      4
      5  END;
      6
      7  /
    PL/SQL procedure successfully completed.
    MASTER_USER@orcl >
    Make sure table secondary_user.test1 exists when you run SP. And, as you can see, neither secondary_user nor master_user have any privs besides create session.
    SY.

  • Can not see Stored Procedures owned by "Code Owner"

    Post Author: BinChen
    CA Forum: Deployment
    I am using Data Source defined with "CR Oracle ODBC Driver 5.0" in "Data Source (ODBC)".
    But in Crystal Report XI, I can not see CodeOwner when I can created a new connection using ODBC (RDO).
    I can see CodeOwner and all SP defined under it when I use "Oracle Server" directly or use sqlplus.

    Post Author: BinChen
    CA Forum: Deployment
    I'm using Window XP with Oracle 10g2R
    To be more clear,
    I have an ODBC Data Source defined as "DEV" and when I created a connection using ODBC, I can only see some database account section like: APP, APPREF, PUBLIC, SYS, SUSTEM. But I can not see CodeOwner.
    If I connected without using ODBC, I can also see CODEOWNER and then all its stored procedures.
    So why I can not see Stored Procedures defined under CODEOWNER using ODBC?
    I have an exsiting report, even I can not see CODEOWNER, but I have no problem to run and preview the report also to "verify database".

  • How can i call a procedure from the app

    hi
    i have an establish connection to a database (MS SQL SERVER 2000) , i can get data from the tabels by sql statments.
    i have stored procedure in the database , how dan i run procedure with parameters from the app.
    lets say i have one procedure that takes one parameter "city_name"
    procedure delete_city ( @city_name char(100) )
    how can i run it
    thanks ahead
    johny

    Hi,
    Assuming con is the connection object:
    Assuming city_name is the name of the city to be passed to the stored proceduer
    Step 1: Create a callable statement object e.g. CallableStatement cs = con.preparecall("{delete_city(?)}");
    Step 2: Set the IN paramter of the stored procedure e.g. cs.setString(1, city_name);
    Step 3: Execute the callable statement e.g. ResultSet rs = cStat.executeQuery(); //assuming only one resultset is returned by your stored procedure
    Step 4: Process the resultset as you do for getting data from your other sql statements.
    This is a very basic way to execute a stored procedure. The complexity lies in executing stored procedures :
    1) which return a value
    2) which will result in multiple result sets
    3) having IN, OUT and INOUT parameters
    4) a combination of any or all of the above
    I would suggest you look up the JDBC API to get more details.
    Regards,
    bazooka

  • Error while running procedure for refreshing AWS

    Hello There,
    I am using a procedure which consists the script of refreshing the analytic workspace. I call this procedure from Business objects data services for automatic refresh.
    It used to work perfectly until the recent changes implemented.
    The issue is, when I run the procedure the cube refreshes successfully. When the same procedure is called from BODS, it shows an error.
    Error is :: XOQ-01601: error while loading data for cube dimension "BI_PETRA_DWH.ACTIVITY_TIME"  into analytic workspace
    Underlying DB error is : ORA-01858: a non -numeric character was found where a numeric was expected.
    I dont get this error if I run procedure directly in SQL developer.
    I verified attribues of dimension, there is only one numeric attribute and it is mapped to only numeric columns of view.
    Can you please help me fixing this issue?
    Thanks in advance.

    Hello There,
    I am using a procedure which consists the script of refreshing the analytic workspace. I call this procedure from Business objects data services for automatic refresh.
    It used to work perfectly until the recent changes implemented.
    The issue is, when I run the procedure the cube refreshes successfully. When the same procedure is called from BODS, it shows an error.
    Error is :: XOQ-01601: error while loading data for cube dimension "BI_PETRA_DWH.ACTIVITY_TIME"  into analytic workspace
    Underlying DB error is : ORA-01858: a non -numeric character was found where a numeric was expected.
    I dont get this error if I run procedure directly in SQL developer.
    I verified attribues of dimension, there is only one numeric attribute and it is mapped to only numeric columns of view.
    Can you please help me fixing this issue?
    Thanks in advance.

  • Fax remmitance issue during teh Payemnt run procedure

    Hi Gurus ,
    There is a scenario : whenever a payment run is executed through F110 , the payments information of vendors or customers are sent to BANK .
    now there is an issue that fax remmitance information has not beeen recievd by the same individual
    How do we check the settings of automatic payment program :in order to check teh fax remmitance details being
    sent to Vendors while payment ?
    Does this kind of sending information deals with a configured workflow in system ?
    Could someone guide me in : Where do we find the configuration settings for Automatic payemnt run procedure?
    Thanks
    KylieTisha

    Hi Gurus ,
    this is a question about Payemnt Run :-
    While conducting the payemnt run a variant is being used , which populates paying company code , company code posting date etc parameters and the printer details also where the payment remittances needs to be sent .
    Payment remittances will include : Fax detailsof vendors etc.
    Fax remittances : vendor fax details as entered in FK03 are supposed to be received at the printer .
    Now could anybody guide me in the information :-
    Fax details as entered in the Vendor Master data will be utilized whileprinting this remittances or do we need toalso mention
    the Standard Communication method : FAX ? Is there a relation between the fields in XK03 Standard Communication method and the Tel Details/Fax Details/Email Detials being entered for the Vendor ?
    now along with vendor fax details do we need to mention the standard communication method as ' FAX ' also in XK03
    so that Payment Run can send only the fax details .
    Any information is appreciable
    Please help.
    Thanks
    Kylietisha
    Edited by: kylietisha on Jul 1, 2010 9:55 PM

  • Can I specify the member dynamically

    Hi everyone,
      I have a question: if I have a structure   STR_A ,   and it has four members M1,M2,M3,M4.
    I will assign values to V1 at run time.can I use a variable like this STR_A-V1 to stand for certain
    member which only can be known at run time?

    Hi
    FIELD SYMBOLS can be used for this purpose. Please refer the F1 help on Field Symbols to know how it can be done. The dynamic assignment of structure components is what you should be looking for in the F1.
    Cheers
    Ravish

  • Calling SQL stored procedure dynamically

    Hallo,
    could anybody tell me how to call HANA SQL stored procedure dynamically?
    The coding looks like this:
    v_ProcedureName := '"' || KpiNamespace || '::' || KpiName || '"';
    v_SQL := 'CALL ' || :v_ProcedureName || '( lt_outKPI )';
    EXEC :v_SQL;
    For this call I get the error message:
    "Transaction rolled back by an internal error: wrong number or types of parameters in call: Physical table is not allowed in OUT table variable position: LT_OUTKPI: line 1 col 55 (at pos 54)"
    The procedure to be called dynamically has a table output parameter.
    Thanks in advance,
    Best Regards,
    Alexey Romanov.
    Hi Alex,
    Can you share your requirement on exactly what is the need to call the procedure dynamically?
    For your question, have a look on the below:
    1) Have a procedure named EMPLOYEE_DETAILS
    http://scn.sap.com/servlet/JiveServlet/downloadImage/2-14895702-415799/236-170/pastedImage_0.png
    2) Created one more procedure named Dynamically as shown below:
    CREATE PROCEDURE Dynamically ()
    AS
    BEGIN
    DECLARE QUERY VARCHAR(1000);
    QUERY := 'call  EMPLOYEE_DETIALS(?)';
    EXECUTE IMMEDIATE (:QUERY);
    END;
    3) Output:
    http://scn.sap.com/servlet/JiveServlet/downloadImage/2-14895702-415800/210-189/pastedImage_3.png
    Regards,
    Krishna Tangudu
    Hi Krishna,
    Thanks for your reply!
    Unfortunately, I can neither go to ‘full discussion’, nor open the pictures, you have attached, nor see you reply.
    That’s why I just add my reply to the problem description.
    The procedure name is composed out of 2 parts on-the-fly, that is why I have to call it dynamically:
    create local temporary table "#KPIEvals"(           
              "KpiNamespace" NVARCHAR(256) CS_STRING,           
              "KpiName" NVARCHAR(32) CS_STRING,               
              "KpiText" NVARCHAR(256) CS_STRING,           
              "Responsible" NVARCHAR(256) CS_STRING );
    FOR cur_row as c_cursor DO        
         v_SQL := '';     
         v_ProcedureName :=  '"' || cur_row."KpiNamespace" || '::' || cur_row."KpiName" || '"';     
         v_SQL := 'CALL ' || :v_ProcedureName || '( lt_outKPI )';     
         EXEC :v_SQL;                
         v_SQL := 'INSERT INTO "#KPIEvals" SELECT * FROM :lt_out_kpi';     
         EXEC :v_SQL;                
    END FOR;
    I guess there might be 2 reasons for the problem:
    1.     All the procedures are called dynamically in a loop.
    2.     All the procedures have an output parameter, which is a table.
    Hope that helps,
    Best Regards,
    Alex.

    Hi Alexey, I think what you may need to do in this case is to do the insert into your temp table from within the dynamically called procedure, therefore no need for output param in your procedure call. You can then select from the temp table in your main procedure. Hope that makes sense.
    Peter

  • Can I use stored procedures to improve data retrieval from the database?

    I have been requested to get multiple pieces of data from multiple tables and return the output in an array for use in a Java program.
    Eliminating multiple calls to the database. Currently, the data is retrieved from the database in multiple steps but to eliminate
    possible bottlenecks in the future, I created several complex sql statements.
    For instance,
    In the first table there are 20 columns of data. has a column named type which can have the one of these values: line, inn, or bsc
    In the second table there are 6 columns of data. has the additional data for type line
    In the third table there are 7 columns of data. has the additional data for type inn
    In the fourth table there are 2 columns of data. has data regardless of type
    etc...
    Depending on a specific column value retrieved (inn) from the first table:
    I need to collect all 20 columns in the first table and get all the columns in third table and the columns in the fourth table, etc.
    Question: How can I remove the duplicate primary key columns without specifying for each table the column names to be returned?
    I used the wildcard SELECT * because I didn't want to have to update the retrieval methods if additional columns are added to these
    secondary tables.
    example of my sql for type inn data:
    select * from first_table f, third_table s, fourth_table t
    where (f.column1='xxxx' and f.column2='xxxx') (the 'xxxx' are passed into the sql statement)
    and
    ((s.column1=f.column1 and s.column2=f.column2)
    and
    (f.column3=t.column1));
    Currently, I've duplicated the separate sqls for each valid type found in the first table (at least a dozen types). The only difference is
    the table name. Instead of the third table I use the second table, etc.
    The MAIN Question: How can I set this up to have one sql to handle each type? I want to eliminate having over a dozen duplicated sqls. Can I
    incorporate this into a stored procedure or something? If so, how? Can anyone provide sample coding?
    Your help is very much appreciated. Thank you.
    GD

    Hi, Salah.
    Use "Exec" in your query to run procedures.
    SAPbobsCOM.Recordset     oRS;
    oRS = (SAPbobsCOM.Recordset)pCmp.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset);
    oRS.DoQuery ("EXEC YourStoredProcName");
    Triggers are not supported in SDK.
    Regards,
    Aleksey

  • Can i use Stored procedures and triggers with SDK

    hi all
    How to use the stored procedure and Triggers with SDK, can i get a sample code
    Regards
    Salah

    Hi, Salah.
    Use "Exec" in your query to run procedures.
    SAPbobsCOM.Recordset     oRS;
    oRS = (SAPbobsCOM.Recordset)pCmp.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset);
    oRS.DoQuery ("EXEC YourStoredProcName");
    Triggers are not supported in SDK.
    Regards,
    Aleksey

  • Executing stored procedure dynamically

    Hi Everybody,
    I am trying to execute one procedure in other procedure dynamically. I am not sure, how to do this. Please provide your responses and comments.
    Main Sp:
    CREATE OR REPLACE PROCEDURE R2D2.SP_UPDATE (
    V_ID IN RC_PENDING_TX.CS_ID%TYPE,
    S_ID IN RC_PENDING_TX_STATUS_VL.STATUS_ID%TYPE,
    A_ID IN VARCHAR2,
    V_NOTES IN VARCHAR2
    IS
    v_date DATE := SYSDATE;
    db_id varchar2(10);
    stmt varchar2(10000);
    stmt1 varchar2(10000);
    BEGIN
    db_ID := get_id(v_ID);
    IF S_ID = 1
    THEN
    stmt:= 'begin utl_pkg.set_v_id@'||db_id||'('||V_ID||','||'1'||'); end;';
    stmt1:= 'begin utl_pkg.set_t_id@'||db_id||'('||V_ID||','||'1,2,3,4'||','||'Y'||');end;';
    execute immediate stmt;
    execute immediate stmt1;
    END IF;
    END SP_UPDATE;
    1) GET_ID IS function to get db_id for v_id.
    2)utl_pkg.set_v_id,utl_pkg.set_t_id two sps i need to execute if s_id = 1.
    3) I have to execute both sps utl_pkg.set_v_id, utl_pkg.set_t_id , which take v_id as input parameter from main sp and these sps will execute in db with db link db_id (which we get from function for v_id we pass in main sp).
    Please let me know, how i can do this. DO i need to do it dynamically or i can do it in some ways.
    Please help me guys. I will really appreciate it.
    Thank you in advance.

    Try this.
    Please see closely commas and parameter passed in procedures.
    SQL> select name from v$database;
    NAME
    ORADB1
    SQL> create or replace package UTL_PKG is
      2   procedure set_v_id(v_id varchar2,any_value varchar2);
      3 
      4  end UTL_PKG;
      5  /
    Package created.
    SQL> create or replace package body UTL_PKG is
      2 
      3    Procedure set_v_id( v_id varchar2,any_value varchar2 )is
      4     
      5    begin
      6       
      7    dbms_output.put_line('Package from remote DB'||v_id ||' '||any_value);   
      8       
      9    end;
    10 
    11  end UTL_PKG;
    12  /
    Package body created.
    SQL> Now on another DB
    SQL> select name from v$database;
    NAME
    ORADB2
    SQL> select db_link,host from all_db_links;
    DB_LINK                HOST
    DB1_LINK              ORADB1  
    SQL> CREATE OR REPLACE PROCEDURE SP_UPDATE (
      2  V_ID IN emp.ename%TYPE, --This datatype is VARCAHR2
      3  S_ID IN emp.empno%TYPE, --This datatype is NUMBER
      4  A_ID IN VARCHAR2,
      5  V_NOTES IN VARCHAR2
      6  )
      7  IS
      8  v_date DATE := SYSDATE;
      9  db_id varchar2(100);
    10  stmt varchar2(1000);
    11  BEGIN
    12 
    13  select db_link into db_id from ALL_DB_LINKS   -- Assuming only DB link is present
    14 
    15 
    16  IF S_ID = 1 THEN
    17  
    18   stmt:= 'begin utl_pkg.set_v_id@'||db_id||'('||''''||v_id||''''||','||'''1'''||'); end;';
    19   dbms_output.put_line(stmt);
    20   execute immediate stmt;
    21  END IF;
    22 
    23  END SP_UPDATE;
    24  /
    Procedure created.
    SQL> show error;
    No errors.
    SQL>  begin
      2     SP_UPDATE('1',1,'a','sometext');
      3     end;
      4  /
    begin utl_pkg.set_v_id@ORADB1('1','1'); end;
    PL/SQL procedure successfully completed.
    SQL> show error
    No errors.
    SQL> Edited by: Azhar Husain on Jun 10, 2011 1:16 PM

  • How run Procedure in SQL Developer?

    I need run procedure in SQL Developer with parameter : 2009
    create or replace PROCEDURE "update_table" (ff_year in varchar2) AS
    CURSOR c_update IS
    select DISTINCT P.mafew name, u.frew nameone, t.greddf, .........
    I click green button RUN and have new window Run PL/SQL. Where in this script I need to print 2009?
    DECLARE
    FF_YEAR VARCHAR2(200);
    BEGIN
    FF_YEAR := NULL;
    update_table(
    FF_YEAR => FF_YEAR
    END;

    Hi,
    user10886774 wrote:
    Thanks all!
    I can run the procedure like 1 or 2 example? Is it right?
    1 like Run Script
    EXEC "UPDATE_TABLE" ('2009');
    2 click RUN on UPDATE_TABLE procedure
    DECLARE
    FF_YEAR VARCHAR2(200);
    BEGIN
    FF_YEAR := '2009';
    UPDATE_TABLE(
    FF_YEAR => FF_YEAR
    END;
    What is the name of the procedure?
    Is it update_tabe (all small letters)? If so, you must reference it as "update_table" (all small letters, inside double-quotes).
    Is it UPDATE_TABLE (all capital letters)? If so, you have the choice of referencing it as "UPDATE_TABLE" (all capital letters, inside double-quotes) or as update_table, or Update_Table, or UPDATE_TABLE, or uPdAtE_taBle, or ... (any kind of letters, without quotes).
    How about commit after?How about it?
    What is the question?
    If you want to commit, say COMMIT or click on the COMMIT icon.

Maybe you are looking for