Table Trigger and Stored Procedure Question

I'm rusty with triggers/procedures and have a quick question.
If a rollback occurs within a procedure containing a raise_applciation_error called from a table insert trigger, will this prevent the insert on the table from occuring?
I want the transaction to be occur on the table even though an exception is raised within the called procedure.

If the trigger is an "after insert" and the procedure called by the trigger raises an error, will the row still be inserted?
SQL> create table t (n number);
Table created.
SQL> create or replace
  2  procedure p as
  3  begin
  4     raise_application_error(-20001,'Something bad happened');
  5  end;
  6  /
Procedure created.
SQL> create or replace
  2  trigger t_trig
  3  after insert
  4  on t
  5  begin
  6     p;
  7  end;
  8  /
Trigger created.
SQL> insert into t values (42);
insert into t values (42)
ERROR at line 1:
ORA-20001: Something bad happened
ORA-06512: at "SELSE.P", line 3
ORA-06512: at "SELSE.T_TRIG", line 2
ORA-04088: error during execution of trigger 'SELSE.T_TRIG'
SQL> select * from t;
no rows selected

Similar Messages

  • Returning a table from a stored procedure

    hi, i need to return a table from a stored procedure and show it, and come to this, but a don't know hoy to run it, so i don't know if it is right, can anyone help me?
    uTable out objects_uptime%rowtype
    as
    begin
    select * into uTable from objects_uptime;
    end;

    well, i finally discovered how to do the trick
    this is the code for the function:
    CREATE OR REPLACE FUNCTION FN_GET_RECORDS RETURN UPTIME PIPELINED IS
    CURSOR cUptime is select * from objects_uptime;
    p refcur.refcur_t;
    temp p%ROWTYPE;
    temp2 OUPTIME := OUPTIME(null, null, null, null, null, null, null, null, null);
    BEGIN
    OPEN cUptime;
    LOOP
    FETCH cUptime into temp;
    temp2.OBJ_NAME := temp.OBJ_NAME;
    temp2.IP := temp.IP;
    temp2.STATUS := temp.STATUS;
    temp2.DOE := temp.DOE;
    temp2.ENABLED := temp.ENABLED;
    temp2.COMMENT00000 := temp.COMMENT00000;
    temp2.USERID := temp.USERID;
    temp2.OBJECTID := temp.OBJECTID;
    temp2.MNTID := temp.MNTID;
    pipe row(temp2);
    EXIT WHEN cUptime%NOTFOUND;
    END LOOP;
    RETURN;
    END FN_GET_RECORDS;
    and this for the auxiliar package, object and table:
    CREATE OR REPLACE PACKAGE REFCUR
    as
    TYPE refcur_t IS REF CURSOR RETURN objects_uptime%ROWTYPE;
    end REFCUR;
    CREATE OR REPLACE TYPE OUPTIME AS OBJECT ( "OBJ_NAME"
    VARCHAR2(255), "IP" VARCHAR2(20), "STATUS" VARCHAR2(10),
    "DOE" DATE, "ENABLED" NUMBER(10, 1), "COMMENT00000"
    VARCHAR2(1000), "USERID" VARCHAR2(50), "OBJECTID" NUMBER(10,
    1), "MNTID" NUMBER(10, 1) )
    CREATE TYPE TUPTIME AS
    TABLE OF OUPTIME
    i call it this way:
    select * from table(FN_GET_RECORDS ())
    if anyone knows how to do the same in a shorter manner, tell me please.
    thanks to everybody for the help.

  • How can L identify what are the not null fields of a table in a stored procedure ?

    How can L identify what are the not null fields of a table in a stored procedure ?

    You could query the data dictionary:
    SELECT column_name
    FROM all_tab_columns
    WHERE owner = '...'
    AND table_name = '...'
    AND nullable = 'N'

  • DAC task with Informatica mapping and stored procedure (very slow)

    Hello,
    We have a DAC task that launch an Informatica Workflow with a simple query and stored procedure, like this:
    SQL QUERY
    ==========================
    SELECT
    W_ACTIVITY_F.ROW_WID,
    W_AGREE_D.AGREE_NUM,
    W_PRODUCT_D.ATTRIB_51,
    W_SRVREQ_D.ATTRIB_05,
    W_ORG_DH.TOP_LVL_NAME,
    W_ORG_D.ATTRIB_06,
    W_PRODUCT_GROUPS_D.PRODUCT_LINE,
    W_PRODUCT_D.PROD_NAME
    FROM
    W_AGREE_D,
    W_SRVREQ_F,
    W_ACTIVITY_F,
    W_PRODUCT_D LEFT OUTER JOIN W_PRODUCT_GROUPS_D ON W_PRODUCT_D.PR_PROD_LN = W_PRODUCT_GROUPS_D.PRODUCT_LINE,
    W_ORG_D,
    W_SRVREQ_D,
    W_ORG_DH
    WHERE
    W_SRVREQ_F.AGREEMENT_WID = W_AGREE_D.ROW_WID AND
    W_SRVREQ_F.SR_WID = W_ACTIVITY_F.SR_WID AND
    W_SRVREQ_F.PROD_WID = W_PRODUCT_D.ROW_WID AND
    W_SRVREQ_F.ACCNT_WID = W_ORG_D.ROW_WID AND
    W_SRVREQ_F.SR_WID = W_SRVREQ_D.ROW_WID AND
    W_ORG_D.ROW_WID = W_ORG_DH.ROW_WID
    STORED PROCEDURE
    ===========================
    ConvSubProy(W_AGREE_D.AGREE_NUM,
    W_PRODUCT_D.ATTRIB_51,
    W_SRVREQ_D.ATTRIB_05,
    W_ORG_DH.TOP_LVL_NAME,
    W_ORG_D.ATTRIB_06,
    W_PRODUCT_GROUPS_D.PRODUCT_LINE,
    W_PRODUCT_D.PROD_NAME)
    The mapping is very simple:
    Source Qualifier -> Stored procedure -> Update strategy (only two ports: ROW_WID and custom column) -> Target Table
    When I launch the DAC Execution Plan the corresponding task take much time (40 minuts). But when I launch the corresponding Workflow from Informatica PowerCenter Workflow Manager this only take 50 seconds... when I see the log session for the task I can see that much time is spent on the time of the updates. For example, when DAC is running the writer updates 10000 records every 6/7 minuts, but when Workflow Manager is running thw writer updates 10000 records every 8/9 seconds.
    So, what happens (in the DAC) to that so much time difference? Is there a way to reduce the execution time when the task is launched from DAC?
    Thanks
    Best Regards
    Benjamin Tey

    Have you tried using bulk load type?
    In Workflow Manager can you open the associated task, navigate to the mapping tab and seled the target table.
    What is the value for "Target load type" and which of the following boxes are checked: Insert, Update as Update, Update as Insert, Update else Insert, Delete?

  • Database updation using XML and stored Procedure?

    Hello,
    I want to perform updation in multiple tables using XML files.Please suggest can I do updation using xml and stored procedure.
    If yes then which is more efficient and takes less time.
    1.Updation using xml files only
    2.Updation using xml files with stored procedure.
    3.Stored procedure alone.
    If direct xml and stored procedure communication is possible.then please write how.
    Thanks in advance for any help.

    Here's a sample. The next code drop of the XSQL Servlet will make the easy-to-do from within XSQL Pages:
    package package1;
    import org.w3c.dom.*;
    import java.sql.*;
    import oracle.jdbc.driver.*;
    import oracle.xml.sql.query.OracleXMLQuery;
    public class Class1 extends Object {
    public static void main( String[] arg ) throws Exception {
    Connection conn = getConnection();
    CallableStatement ocs = conn.prepareCall("begin ? := App.HotItems('PAUL'); end;");
    ocs.registerOutParameter(1,OracleTypes.CURSOR);
    ocs.execute();
    ResultSet rs = ((OracleCallableStatement)ocs).getCursor(1);
    OracleXMLQuery oxq = new OracleXMLQuery(conn,rs);
    System.out.println(oxq.getXMLString());
    oxq.close();
    rs.close();
    ocs.close();
    conn.close();
    public static Connection getConnection() throws Exception {
    String username = "scott";
    String password = "tiger";
    String dburl = "jdbc:oracle:thin:@localhost:1521:xml";
    String driverClass = "oracle.jdbc.driver.OracleDriver";
    Driver d = (Driver)Class.forName(driverClass).newInstance();
    return DriverManager.getConnection(dburl,username,password);
    null

  • How can i create a Global Temporary Table inside a Stored Procedure....

    Hi...
    I need to create a Global Temporary Table inside a Stored
    Procedure....
    I have no idea how to do that....
    Please....if u can send me a sample, send to me....
    Thanks a lot

    To create a global temporary table inside a stored procedure,
    the minimal syntax would be:
    CREATE OR REPLACE PROCEDURE procedure_name
    AS
    BEGIN
    EXECUTE IMMEDIATE 'CREATE GLOBAL TEMPORARY TABLE table_name'
    || '(column_name NUMBER)';
    END procedure_name;
    As Todd stated, it would probably be better to create the global
    temporary table outside of the procedure:
    SQL> CREATE GLOBAL TEMPORARY TABLE table_name
    2 (column_name NUMBER);
    Table created.
    You can also specify things like ON COMMIT PRESERVE ROWS or ON
    COMMIT DELETE ROWS.
    It may be that there is something else, like a PL/SQL table of
    records or a cursor, that would suit your needs better. It is
    difficult to guess without knowing what you want to do with it.

  • How Create a Global Temporary Table inside a Stored Procedure?

    Hi...
    I need to create a Global Temporary Table inside a Stored
    Procedure....
    I have no idea how to do that....
    Please....if u can send me a sample, send to me....
    Thanks a lot

    there are many ways to do this..
    one u can use dbms_utility package to run ddl statements like
    for ex:
    declare
    t varchar2(200):='order_no';
    v number;
    begin
    --dbms_utility.exec_ddl_statement('select '||t||' into '||v||'
    from
    --ordermaster where rownum=1');
    dbms_utility.exec_ddl_statement('create table cvt(t number)');
    dbms_output.put_line(v);
    end;
    but the actual method(recommended) involves a bit coding using
    dbms_sql package you will find examples on technet or metalink
    to use this package..
    I hope this helps
    Narendra

  • Approval Procedures and Stored Procedures

    Hi All
    I have a problem with approval procedures and stored procedures.
    I created an approval procedure to check if a value in the udf is selected or not . if not then a messge is produced to ask the user to select the person to approve the PO.
    Biut now the problem is the PO's are linked approval templates to the error messge don't show before the approval template screen.
    Please assist.
    Thanks
    Bongani Dlamini

    Hi Gordon
    The stored procedure is just for validating if the user has selected the udf value.
    It is not for approval*
    I created an approval template for this purpose. So my problem is when I add the Po to the system the SP doesn't kick-in and alert the user to select the person to approve the PO.
    Process Flow.
    User captures PO then select the value on the UDF Field ( Approver) The value selected is linked to a query which is used by the Approval Template
    If this method is still not supported then please let me know .
    Thanks
    Bongani Dlamini

  • PowerPivot tables and stored procedures

    What can I use to dynamically create a PowerPivot table in excel, using a stored procedure as a data source?
    Onyx12

    Hi there
    Thank you for your response.
    Here's what I'm trying to achieve and I stand under correction. I have a stored procedure which I want to mirror it's query result as a Pivot Table in Excel, and have done so by hard coding the execution code and imported it to Excel. But now I'm trying
    to find out if there is another way to do this, in Excel though. I've been looking at solutions which include building macros, but I'm afraid SSMS does not support them. And even so, I'm not sure if building a macro is an ideal solution in this case. In essence,
    I'm trying to retrieve data using a stored procedure, through the use of TSQL code in Excel. Please see query I've provided to Excel, using PowerPivot. I hope I've articulated myself thoroughly.
    DECLARE @RC int
    DECLARE @as_at_date datetime
    DECLARE @all_versions bit
    DECLARE @include_motor bit
    DECLARE @include_reserve bit
    -- TODO: Set parameter values here.
    SET @as_at_date = GETDATE()
    SET @all_versions  = 0
    SET @include_motor  = 0
    SET @include_reserve  = 0
    EXECUTE @RC = [dbo].[usp_claims_by_reserve] 
       @as_at_date
      ,@all_versions
      ,@include_motor
      ,@include_reserve
    Onyx12

  • XMLSQL and stored procedures

    I looked in the archives and found an entry dated November 9, 1999 that asked the question of wheter the XMLSQL utility could be used in conjunction with a stored procedure. That answer was essentially 'not yet'. I just wanted to get an update on whether the XMLSQL utility supported stored procedures and if not, when?

    Well, I tried it and you're correct; the designer doesn't like package procedures.
    And the designer doesn't like ref cursors, either. I was able to use them, however, by writing my own method. I added the method to my dataset (patial class) and it works great. I probably could have (and should have) put the method in the table adapter class (again, in separate partial class file so that it doesn't get discarded by the designer) but I didn't know that I could do that at the time. Now that I know, I may move it.
    Somewhat related, I found that I could handle events of the OracleDataAdapter in a partial TableAdapter class. Why is this interesting? Because after TableAdapter updates, I think that I can select the updated rows back in to the DataTable. This will be handy (if possible) if the data that I update is modified by a trigger or something. Let me know if you've tried this. By the way, SQL Server makes this easy! Follow your update SQL with a select statement; it all happens in the same command!
    Namespace DGPPDbDataSetTableAdapters
         Partial Public Class MilestoneDatesTableAdapter
              Private Sub adapterRowUpdated(ByVal sender As Object, ByVal e As System.Data.OracleClient.OracleRowUpdatedEventArgs) Handles _adapter.RowUpdated
                   'TODO: Re-Select the updated rows back in to the DataTable
              End Sub
         End Class
    End Namespace

  • A temp table in a stored procedure , set a value to varchar(MAX)

    Hi ,,
    In stored procedure there is  a temp table and set a value to varchar(MAX) . What exactly is the different between setting it to varchar (MAX) instead of  varchar(n)
    Thank You
    Jeevan Vinay

    Vinay,
    Spend some time online to read and search about your problem before blindly posting it on forum, if you would have done that you could have found out eaisly below two links which will explain you in deep
    http://stackoverflow.com/questions/3682821/difference-between-varchar500-vs-varcharmax-in-sql-server
    http://sqlhints.com/2013/03/10/difference-between-sql-server-varchar-and-varcharmax-data-type/
    Please mark this reply as answer if it solved your issue or vote as helpful if it helped so that other forum members can benefit from it
    My Technet Wiki Article
    MVP

  • Prepared Statement and Stored Procedure difference?

    For SQL in my web applications I use PreparedStatement object alot in my JDBC working with Oracle 9i.
    I also heard the term Stored Procedure. What is the difference between Stored Procedure and Prepared Statement?

    I am new to java programming, can anybody explain
    what exactly precompiled means
    Thank you
    PalspaceWhat does you subject line have to do with your question?
    The difference between a stored proc and a prepared statement is mainly this.
    A stored proc is stored in the database server permanently and can be used and re-used from a different connections.
    A PreparedStatement is not valid across connections.
    Stored procs are almost always precompiled. (I am just hedging a bit here just in case but you can consider it 100%)
    PreparedStatements MAY be precompiled. Hard to say.
    Precompiling means at least one of and perhaps all of the following depending on the database
    - The parsing of the SQL statement
    - The checking of the SQL against the data dictionary to ensure that the tables and columns referenced actually exist
    - The preparation of a query plan
    Last but not least Stored procedures may (and often do) contain more than simple queries but are in fact relatively complex programs written in a DB specific language (an offshoot of SQL of some sort).

  • Power BI and Stored Procedures

    Hello,
    I am new to this forum and to Power BI Designer - please forgive me if this question has been asked.
    When I connect to my company's database through Power BI Designer, I can view the tables, UDFs and views.  The stored procedures, however, do not show up.
    I would grateful to anyone who could help.
    Thanks,

    Hello,
    The link below answer this question.
    https://social.technet.microsoft.com/Forums/en-US/f34ca56f-4865-4b0e-87d5-483170f0734e/use-of-stored-procedure?forum=powerquery
    Hugs!
    Bruno Destro
    Dicas de programação em .net, C# e SQL - http://smcode.com.br/blog.aspx

  • Result Sets and Stored Procedure

    In advance one question in general - since I never know: What actually is a result set???
    Is it a cursor with a direct connection to the server-side database-data ? Or is it just a copy of the results once "loaded" by the query and delivered by the Server to the client ???
    Second: I have a Stored Procedure on a MS SQL Server 2000
    I try to call the stored procedure via jdbc. The last query in the Stored Proc is a query relying on local temporary tables. If I execute the stored procedure by my java-class, i get a
    java.sql.SQLException: [Microsoft][SQLServer JDBC Driver]No ResultSet set was produced.
    The usual "Select, Update and Insert-stuff" works fine with JDBC.
    Stored Procedures WITHOUT resultset work fine too.
    But this one just refuses to give me the results.
    Executing the same stored procedure in 'MS SQL-QUERYANALYZER' gives me my expected results.
    Any ideas?
    Sven

    In advance one question in general - since I never
    know: What actually is a result set???
    Is it a cursor with a direct connection to the
    server-side database-data ? Or is it just a copy of
    the results once "loaded" by the query and delivered
    by the Server to the client ???The first one, more or less. It relies on the connection to retrieve the results, .. if the connection is lost, so is the data in the ResultSet.
    Second: I have a Stored Procedure on a *MS SQL Server
    2000*
    I try to call the stored procedure via jdbc. The last
    query in the Stored Proc is a query relying on local
    temporary tables. If I execute the stored procedure by
    my java-class, i get a
    java.sql.SQLException: [Microsoft][SQLServer JDBC
    Driver]No ResultSet set was produced.Have you tried a basic stored procedure that should return a ResultSet?.. maybe one that doesn't rely on the temporary tables? You may want to also check with the support for the driver you're using since that's really where the ability to use stored procedures resides.

  • TableAdapters and stored procedures

    Anyone know if there is any support for Oracle using stored procedures with a TableAdapter?
    For those unfamiliar with this feature in VS 2005, we create a strongly typed DataSet, put a table on it using the designer, add/configure a TableAdapter and enter the TableAdapter Configuration Wizard. From here, we choose a connection string, then the next wizard step asks "How should the TableAdapter access the database?" Using an Oracle connection string, the only option that is not disabled is "Use SQL statements".
    At this step, for an SQL Server connection string, we can select "Use existing stored procedures", which is what we want to use now with Oracle 9i R2. We've been using SQL DML statements quite happily with TableAdapters so far, and had not really noticed that this feature would not be available for Oracle. Unfortunately, we now need to use stored procedures, and we quite like the TableAdapters --- once you get over the rather obvious coupling of data access to the DataSet, not having to write so much code to use DataAdapters is quite nice.
    I've read a little about the ODT, and the Oracle Explorer stuff looks pretty cool, but if I go to the trouble of installing the ODT, will it fix my TableAdapter stored procedures problem? Are there any other tools or workarounds?

    Well, I tried it and you're correct; the designer doesn't like package procedures.
    And the designer doesn't like ref cursors, either. I was able to use them, however, by writing my own method. I added the method to my dataset (patial class) and it works great. I probably could have (and should have) put the method in the table adapter class (again, in separate partial class file so that it doesn't get discarded by the designer) but I didn't know that I could do that at the time. Now that I know, I may move it.
    Somewhat related, I found that I could handle events of the OracleDataAdapter in a partial TableAdapter class. Why is this interesting? Because after TableAdapter updates, I think that I can select the updated rows back in to the DataTable. This will be handy (if possible) if the data that I update is modified by a trigger or something. Let me know if you've tried this. By the way, SQL Server makes this easy! Follow your update SQL with a select statement; it all happens in the same command!
    Namespace DGPPDbDataSetTableAdapters
         Partial Public Class MilestoneDatesTableAdapter
              Private Sub adapterRowUpdated(ByVal sender As Object, ByVal e As System.Data.OracleClient.OracleRowUpdatedEventArgs) Handles _adapter.RowUpdated
                   'TODO: Re-Select the updated rows back in to the DataTable
              End Sub
         End Class
    End Namespace

Maybe you are looking for

  • Where can I get an copy of old install disks?

    I lost my old adobe suites cd, and I'm not sure what to do. It was an older version, but still served me well.  - My computer crashed a few months ago, and they weren't able to recover anything on my computer. Including the suites. When I went to loo

  • How do i retrieve the total number of pages in a report-- via RAS SDK

    CrystalReportViewer has showFirstPage() showLastPage() showNextPage() showNthPage(int pageNumber) showPreviousPage(). But how I determine the number of pages for a report. Our app handles pagination and hence this requirement. Thanks. JM

  • Bank account display

    Hello Friends In FS10n Bank account Display I want offict entry line items   ? for example Vendor a/c               Dr  1000 Bank Chq issue A/c  Cr  1000 in Bank Chq issue a/c- Vendor a/c   Cr   1000

  • CUP - Valid to date

    Hi, in our system we are using workflows for "deleting" users. Due to policies we have to keep a non-valid user in the system up to the beginning of the next month. So what we did before was setting the valid-to date to the day before today. Thus, th

  • Way to use an animation panel function working with DPS

    I'm making a mobile magazine using DPS in Adobe Indesign program. Is there a way to use any function on animation panel? I want to apply fade-in & fade-out effects to the mobile magazine, and I've tested it several times with smart phone and Adobe Co