Triggers in Stored Procedures
Hi,
I am trying to execute the following procedure:
create or replace procedure create_view_trigger (viewname IN varchar2, triggername IN
varchar2, emp_number IN emp.empno%TYPE ) is
sql_statement varchar2(200);
view_name varchar2(100);
sql_statement1 varchar2(10000);
trigger_name varchar2(100);
begin
view_name := viewname;
sql_statement := 'create or replace view ';
sql_statement := sql_statement || view_name ||' as select * from emp';
dbms_output.put_line('View is created');
execute immediate sql_statement;
trigger_name := triggername;
sql_statement1 := 'create or replace trigger ';
sql_statement1 := sql_statement1 || trigger_name ||' instead of update on ';
sql_statement1 := sql_statement1 || view_name ||' referencing new as n for each row';
sql_statement1 := sql_statement1 || ' DECLARE employeenumber emp.empno%TYPE;';
sql_statement1 := sql_statement1 || ' BEGIN';
sql_statement1 := sql_statement1 || ' employeenumber = emp_number;';
sql_statement1 := sql_statement1 || ' UPDATE employee_info SET sal = sal+20';
sql_statement1 := sql_statement1[i]Long postings are being truncated to ~1 kB at this time.
I don't have much experience with Lite, but I'm running 9i Personal Edition. Any information about triggers can be found in the "ALL_TRIGGERS" view. You will want to filter out any rows where OWNER = 'SYS' unless you created your triggers as SYS. As for procedures and functions, you can see what you have created in the "ALL_OBJECTS" view where OBJECT_TYPE = 'PROCEDURE' or 'FUNCTION', once again filtering out rows where OWNER = 'SYS'. To see the code of any procedure or function, select substr(text,1,80) from ALL_SOURCE where NAME = 'function name' ORDER BY LINE.
Hope this helps!
Similar Messages
-
Report with stored proc running multiple stored procedures with insert statement
Hi,
I wonder if this is possible in SSRS ... I use the 2012 version (Data Tools).
I have a report that triggers a stored procedure. See below.
Within this SP there are 2 insert statements getting data from 2 other SP's.
When I make a dataset referring to the main SP below, SSRS does not show me any fields at all.
Is this because it's a SP with insert statements and nested SP's?
At the end of the SP I make a select so it should see all the fields.
The parameters @month and @costcenter are multivalue params. I use a special function to convert the multivalues, selected in the report, into a string to pass it correctly to the query (comma separated).
USE [TestDB]
GO
/****** Object: StoredProcedure [dbo].[_Pink_SP_StandingsRegisterDataset] Script Date: 15-4-2014 13:31:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[_Pink_SP_StandingsRegisterDataset]
@year INT,
@month NVARCHAR(50),
@costcenter NVARCHAR(500),
@GLaccount NVARCHAR(9)
AS
BEGIN
/* Remove existing content*/
DELETE FROM _Pink_TB_StandingsRegister
/* Add records part 1 */
INSERT INTO _Pink_TB_StandingsRegister
EXEC _Pink_SP_StandingsRegister @year, @month, @costcenter, @GLaccount
/* Add records part 2 */
INSERT INTO _Pink_TB_StandingsRegister
Type,
Row,
Year,
Month,
YearDatetable,
MonthDatetable
EXEC _Pink_SP_StandingsRegisterDatetable @year
/* Select all records */
SELECT *
FROM _Pink_TB_StandingsRegister
END
GOHi bijntjede2e,
After testing a similar scenario in my own environment, it works well in Reporting Services. In my test, the stored procedure returns all the fields from _Pink_TB_StandingsRegister table in the dataset. Then I select some values from year, month, costcenter
and Glaccount parameters, it inserts some values in the _Pink_TB_StandingsRegister table. So we can use this stored procedure as the dataset in the report.
In order to solve the problem more efficiently, I need to clarify some information.
Are you pass multiple values parameter to one stored procedure correctly? We can refer to the following thread:
http://social.technet.microsoft.com/Forums/en-US/dbdfa101-cccc-4e9f-aa50-566dc5ebcc27/ssrs-2008-r2-report-dataset-call-a-stored-procedure?forum=sqlrep
What results are you get when executing the stored procedure in SQL Server Management Studio? Is it works well? We should double those stored procedures.
If there are any misunderstanding, please elaborate the issue for further investigation.
Thanks,
Katherine Xiong
Katherine Xiong
TechNet Community Support -
Dear Friends,
I have a lot of c-stored procedures for DB2,
now,I want to use these c-stored procedures in Oracle directly without any changes.
I'm not sure whether this method is right.
Please help me.
GuangI think, that the best way inclusion of business logic into ORACLE database as a TABLE-constraints, triggers and stored procedures for guaranteeing data integrity.
But if you have really a LOT of c-stored procedures and you need provide quick startup with ORACLE, than you can use your c-procedures as "external calls" with ORACLE.
Unfortunately I don't know DB2 c-stored procedures specifics and can't give finally recommendations for you.
Sincerely, Urry -
How to migrate MySQL stored procedure to Oracle
Hi All,
I migrated mysql 5.1.42-enterprise-gpl-advanced DB to oracle using sqldeveloper 3.1.07 tool.
DB objects migrated successfully except Stored Procedures.
I verified .sql and Out files.. Capture process not captured stored procedures SQL.
Could you please suggest, where I can verify exact error or how to fix this issue.
Thanks in advance.Hi,
The SQL*Developer version you are using is an old one and you should use the latest version available from this link -
Oracle SQL Developer
However, even the v4 version does not support the migration of MySQL stored procedures as shown in this link -
http://www.oracle.com/technetwork/developer-tools/sql-developer/supportedmigplatforms-086703.html
You will have to manually convert the MySQL stored procedures to an Oracle format, as even the 'Scratch Editor' under 'Tools - Migration' - does not have an option for MySQL conversion.
The documentation has details of the difference between MySQL and Oracle stored procedures -
Oracle® SQL Developer Supplementary Information for MySQL Migrations
in the chapter Triggers and Stored Procedures
Regards,
Mike -
Java stored procedures and triggers in lite
Hi
We are using java stored procedures and java triggers in our application for oracle lite database 5.1.
We would like to know whether these procedures and triggers are uploaded or associated with tables or not because triggers are not being fired for the tables.
The question is - how to find the uploaded procedures and triggers in system tables.
We dont find any tables like (all_objects, user_objects) for this in oracle lite system catalogs given in the documentation.
thanks in advance
yugandharI don't have much experience with Lite, but I'm running 9i Personal Edition. Any information about triggers can be found in the "ALL_TRIGGERS" view. You will want to filter out any rows where OWNER = 'SYS' unless you created your triggers as SYS. As for procedures and functions, you can see what you have created in the "ALL_OBJECTS" view where OBJECT_TYPE = 'PROCEDURE' or 'FUNCTION', once again filtering out rows where OWNER = 'SYS'. To see the code of any procedure or function, select substr(text,1,80) from ALL_SOURCE where NAME = 'function name' ORDER BY LINE.
Hope this helps! -
Java Stored Procedures and Triggers
I want to to use Java stored procedures and triggers within the Oracle 11g XE
So please , someone can help me because i tried but it didn't work
I don't know where is the problem
Thanks !!WRONG FORUM!
Welcome to the forum but this forum is for Java JDBC questions and issues. Your question should be posted in the SQL and PL/SQL forum
PL/SQL
>
I want to to use Java stored procedures and triggers within the Oracle 11g XE
So please , someone can help me because i tried but it didn't work
I don't know where is the problem
>
Mark this question ANSWERED and repost the question in the other forum
Before you post review the Oracle Database Java Developer's Guide - it shows how to create Java stored procedures and has example code
http://docs.oracle.com/cd/B28359_01/java.111/b31225/chfive.htm
And in the new post don't just say "I tried but it didn't work". You need to post the code that you tried and what you mean by "didn't work".
If you got any exceptions or errors you need to post a copy of the exact message or error that you are getting. -
We are writing a J2EE application and using Weblogic 5.1 on Unix machine. We are
considering writing some Stored Procedures or Triggers on Oracle DBMS. Hence our
Stateless Session Beans / Data Access Objects (DAOs) would be calling those stored
procedures, which would reside on Oracle 8.1.7 (on Windows 2000). (These Data
Access Objects are running under the umbrella of a Stateless Session Beans). We
are using WebLogic's Connection Pooling.
Our question is: Would we get reliable rollbacks from our stored procedures. I
mean would the Transaction Management process of the EJB container work. Remember
the SQL is written in the Database (Oracle in this case) in the form of Stored
Procedures / Triggers through PL/SQL.
Any ideas or tips would help.
I would agree with Cameron Purdy. Be very cautious to use Oracle specific
Triggers / Stored Procedures. Consider following, (apart from what he said):
1. Unreliable behaviour of the Oracle JDBC drivers, specially 8.1.6 family..
(You may visit the Oracle's web site and see the newsgroups for the JDBC drivers).
This is enough of a reason to stop right there.
However for interest sake you may consider following issues:
2. By use of Oracle specific Triggers / SPs the application will not be portable.
Vendor Lock In. Remember your choice for J2EE compliant Server (WebLogic in this
case). The whole purpose would be defeated by going for this option.
3. There are issues related to the extensibility of the application. I have
my reservations and would hold my breath on two phase commit protocol transactions
being reliable in this scenario.
Have fun...
Terry
"Cameron Purdy" <[email protected]> wrote:
>Yes, the work performed by the SPs and the triggers would be in the same
>tx.
>
>What would NOT work is if the data has been read into WebLogic and then
>it
>gets affected by a trigger or SP on the RDBMS, the data in WebLogic is
>not
>automatically re-read within that same tx so you need to be careful.
>
>Peace,
>
>--
>Cameron Purdy
>Tangosol Inc.
>Tangosol Coherence: Clustered Coherent Cache for J2EE
>Information at http://www.tangosol.com/
>
>
>"Ahmad" <[email protected]> wrote in message
>news:[email protected]...
>>
>> We are writing a J2EE application and using Weblogic 5.1 on Unix machine.
>We are
>> considering writing some Stored Procedures or Triggers on Oracle DBMS.
>Hence our
>> Stateless Session Beans / Data Access Objects (DAOs) would be calling
>those stored
>> procedures, which would reside on Oracle 8.1.7 (on Windows 2000). (These
>Data
>> Access Objects are running under the umbrella of a Stateless Session
>Beans). We
>> are using WebLogic's Connection Pooling.
>> Our question is: Would we get reliable rollbacks from our stored
>procedures. I
>> mean would the Transaction Management process of the EJB container
>work.
>Remember
>> the SQL is written in the Database (Oracle in this case) in the form
>of
>Stored
>> Procedures / Triggers through PL/SQL.
>> Any ideas or tips would help.
>
>
-
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
SalahHi, 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 -
Stored Procedures, Triggers and Functions
Can someone tell me the name of the table(s) in which procedures, functions and triggers are stored?
Procedure and function in USER_SOURCE
triggers in USER_TRIGGERS
Can someone tell me the name of the table(s) in which procedures, functions and triggers are stored? -
Triggering and Stopping a Stored Procedure
I'm setting up a mass mailing system for approx 250,000
users.
I need to find a way to trigger a stored procedure to run
every 5 miuntes untill the task is complete. The idea being that
once triggered it'll work its merry way through the database firing
off a couple of thousand emails each cycle untill it's reached the
end.
Any ideas how to implement this?
ThanksGenerally, the term "stored procedure" is used to mean a
piece of SQL code that is stored and run in the database server. It
sounds like what you mean is a ColdFusion Scheduled Task - a piece
of CF code that is run automatically. You can set these up using
either the CF administrator or the <cfschedule> tag. Breaking
up your mailings is a good idea since CF will probably time out if
you try to execute 250,000 mailings at once. You could do something
like this:
1) If unsent records, do:
2) Select X number of unsent records
3) Send mail
4) Update X records as having been sent
You would just have to make sure that you time it correctly,
otherwise you could wind up with 1 process starting before the
other finishes and some people will get duplicate emails. -
Hi guys, I'm trying to create a Stored procedure that will automatically add all 3 After triggers when executed on any given database, can someone please explain and give an example on how do I go about doing this ? I'd also like it to raise any errors
that may come across, thanks in advance.Lets start with the question why do you need the triggers at all. Since SQL Server 2005 we can use an OUTPUT clause.
This code can be re-written in SQL Server 2005 using the OUTPUT clause like below:
create table itest ( i int identity not null primary key, j int not null unique )
create table #new ( i int not null, j int not null)
insert into itest (j)
output inserted.i, inserted.j into #new
select o.object_id from sys.objects as o
select * from #new
drop table #new, itest;
go
Now from this example, you can see the integration of OUTPUT clause with existing DML syntax.
Another common scenario is auditing of data in a table using triggers. In this case, the trigger uses information from the inserted and updated tables to add rows into the audit tables. The example below shows code that uses OUTPUT clause in UPDATE and DELETE
statements to insert rows into an audit table.
create table t ( i int not null );
create table t_audit ( old_i int not null, new_i int null );
insert into t (i) values( 1 );
insert into t (i) values( 2 );
update t
set i = i + 1
output deleted.i, inserted.i into t_audit
where i = 1;
delete from t
output deleted.i, NULL into t_audit
where i = 2;
select * from t;
select * from t_audit;
drop table t, t_audit;
go
Best Regards,Uri Dimant SQL Server MVP,
http://sqlblog.com/blogs/uri_dimant/
MS SQL optimization: MS SQL Development and Optimization
MS SQL Consulting:
Large scale of database and data cleansing
Remote DBA Services:
Improves MS SQL Database Performance
SQL Server Integration Services:
Business Intelligence -
Triggers accepting parametes from stored procedures
Can triggers accept parameters from stored procedures like some filename or column name of a table and pass them to external c procedures.If so I would greatly appreciate if any one could provide me with an example.
P.S The trigger is on a view and the view which in turn should be created in the stored procedure.
Thanks
HariniHello,
Yes you can invoke Web Services from the database, it is often called "Database Web Service call out" and it is documented in the Web Services Developer Guide
Regards
Tugdual Grall -
Calling a stored procedure before row update without using triggers
I have got two tables Main Table(Table1) and History Table(Table2), whenever an update is done on Table1 i want to insert the old row before update to Table2, so that i have history available for that record.
My doubt is
how to refer to old value (values b4 update) in a stored procedure?
how to call a stored procedure b4 every row update(on the database side as we do with tiggers)?
I want to write a stored procedure where in i will insert the old row values ( value b4 update ) to Table2.
Any Help would be great....sample code calling procedure before insert:
DriverManager.registerDriver(new someDriver);
Connection conn = DriverManager.getConnection(driver,uname,pword);
CallableStatement cs = conn.prepareCall("{call procedureName(?,?)}");
cs.setString(1,userName);
cs.registerOutParameter(2,Types.VARCHAR);
cs.execute();
success = cs.getString(2);
PreparedStatement pstmt = conn.prepareStatement("insert into sometable values(?,?)");
pstmt.setString(1,userName);
pstmt.setString(2,password);
pstmt.executeUpdate();
conn.commit();
cs.close();
conn.close(); -
Triggers, Stored Procedures and Java
Hi all.
I started developing some useful (at least for me) Java Package, and I'm wondering if I'm doing the right thing.
Let's say that I have a trigger that calls a Stored Procedure that calls a Java Package.
Let's say that the Java Package can be used by more than one Oracle Schema.
So, my question is:
Should I load the package in every Schema ? Or should I load the package in the System (for instance) schema, creating synonyms for it (if possible) ? Or should I create both the package and the Stored Procedure in System, creating synonyms for the procedure ?
I'm a little stuck in this....
Another question : when my trigger fires, it launch the Stored Procedure and, consequently, my Java Package.... At this point, am I in the same transaction of the trigger ? Or the Java Package start a new "subtransaction" ?
Thanks in advance for Your help.
Best Regards
Fabio GRANDEDo not create anything in the System schema. Create the package and procedure in one schema and create a public synonym that the other schemas can use to access it.
And yes the trigger and anything it executes are all part of the same transaction. As long as none of the procedures are declared as an autonomous transaction, in which case that procedure would be a separate transaction. -
PowerShell SQL script to replace text in Triggers, Stored Procedure, can't get match
I think my issue is with matching text and regular expression, any help would be appreciated.
$server = "BOCADBD2";
# The SQL Server instance name
$database = "SYSDB"; # The database name
$matchText = "(raiserror\s@errno\s@errmsg)";
# Definition text to search .Be aware this accepts a regular expression
$replaceText = "raiserror (@errmsg,16,1)";
# Text to replace $matchText
$alter = $false; # Set to true if you want the script to alter database objects
$backupFolder = "v:\RaiseErrorTest\";
# Change script folders. Need a \ (back slash) on the end
$changeFolder = "v:\RaiseErrorTest\";
# One file per object, backup & change folders
$Hold = $matchText;
# Load the SQL Management Objects assembly (Pipe out-null supresses output)
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | out-null
# Create our SMO objects
$srv = New-Object "Microsoft.SqlServer.Management.SMO.Server" $server;
$db = New-Object ("Microsoft.SqlServer.Management.SMO.Database");
# Get the database
$db = $srv.Databases[$database];
# For each stored procedure in the database
foreach($proc in $db.StoredProcedures)
# For each matching stored prcoedure
if($proc.TextBody -match $matchText )
Write-Host $matchText;
Write-Host "Processing proc: " $proc.Name;
# Backup of the original proc definition
$proc.Script() | Out-File ($backupFolder + "procs\" + ([string]$srv.name -replace("\\", "_")) + "_" + [string]$db.Name + "_" + [string]$proc.name
+ "_backup.sql");
# New procedure definition sql
$proc.Script() -replace($matchtext, $replaceText) | Out-File ($changeFolder + "procs\" + ([string]$srv.name -replace("\\", "_")) + "_" + [string]$db.Name + "_"
+ [string]$proc.name + ".sql");
# If set to true this will change the procedure definition on the server!
if($alter)
$proc.TextBody = $proc.TextBody -replace($matchtext, $replaceText);
$proc.Alter();
Write-Host "Altered " $proc.Name;I think $matchText is incorrect so I never get a match and was hopping for any suggestions.
$replaceText may be incorrect also, have looked for many hours on internet with no luck.
How can we know if it is correct. We cannot see the target text. Try it with an example of the test you are looking for.
Your match only matches: "raiserror @errno @errmsg"
And no other string.
¯\_(ツ)_/¯
Maybe you are looking for
-
In iPhone 4 the camera shutter doesn't open for a minute or more
Have an iPhone for over 3 years and this is new. Cold start doesn't correct Franklin
-
My homepage when opening Firefox is not Bing, yet for some reason today it started using Bing instead of Google for my NEW tab search results. I already deleted Bing from the search bar, no results. Deleted Bing from my computer's control panel. I ju
-
Document attachment is not displaying , asking user ID password
Hi, new year wishes to experts currently we are working on SAP CRM 4.0 version with webclient, as per my business requirement , i need to use documents as attachments to service ticket and even in knowledge base, so we configured content server , but
-
ITunes doesn't recognize my updated iPod
Using iTunes 5.0.1 I upgraded my iPod software to 1.2 for my color iPod. I still get the message that I cannot use purchased music because my software is too old. On the iPod the version says it is 1.2. I tried repairing permissions but it didn't hel
-
Incorrect Cost center posting on vendor invoice.
Hi All, When a purchase order is created, the Account assignment tab on the Items has G/L Account 71005050 and cost center 100704. when a invoice is created, it is posting to the correct G/L account but to different cost center 100708. Please advice