Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.tools -> Re: Deferrable constraints in stored procedures
A copy of this was sent to "Daniel A. Morgan" <dmorgan_at_exesolutions.com> (if that email address didn't require changing) On Thu, 07 Jun 2001 16:39:41 -0700, you wrote:
>Keith Jamieson wrote:
>
>> I had this problem, and teh same sql issued by SQLPLUS did not work inside a
>> PL/SQL procedure. This is because ALtering constraints is considered DDL.
>> So, you have to put your command inside dbms_sql and all will be OKAY.
>>
>> Daniel A. Morgan wrote in message <3B1F1742.175270A1_at_exesolutions.com>...
>> >Steve Nyberg wrote:
>> >
>> >> Is there a way to add SQL like the following, which works fine in SQL
>> >> Plus and Toad, to a stored procedure? This code is used for cascading
>> >> updates of PK/FK fields in multiple tables. My guess is the SET
>> >> CONSTRAINTS line is not valid in PL/SQL, even when I've added a SET
>> >> TRANSACTION READ WRITE before it. Is there a workaround to do this in
>> >> a procedure? Thanks in advance,
>> >>
>> >> Steve
>> >>
>> >> SET CONSTRAINTS ALL DEFERRED;
>> >> update route set routeareaid=0 where routenbr=888;
>> >> update subroute set routeareaid=0 where routenbr=888;
>> >> COMMIT;
>> >
>> >I have used syntax similar to yours in procedures. Did you try it?
>> >
>> >SET is perfectly valid in PL/SQL.
>> >
>> >Daniel A. Morgan
>> >
>
>DBMS_SQL or Native Dynamic SQL. Either will work.
>
>But SET does not require anything other than just typing it into the procedure
>body.
>
>Daniel A. Morgan
set constraints is not supported natively in plsql:
ops$tkyte_at_ORA8I.WORLD> begin
2 set constraints all deferred;
3 end;
4 /
set constraints all deferred;
*
ERROR at line 2:
ORA-06550: line 2, column 5: PLS-00103: Encountered the symbol "CONSTRAINTS" when expecting one of the following:
ops$tkyte_at_ORA8I.WORLD> set constraints all deferred;
Constraint set.
ops$tkyte_at_ORA8I.WORLD> begin
2 execute immediate 'set constraints all deferred';
3 end;
4 /
PL/SQL procedure successfully completed.
so the dynamic sql is in fact necessary.
-- Thomas Kyte (tkyte_at_us.oracle.com) Oracle Service Industries Howtos and such: http://asktom.oracle.com/ http://asktom.oracle.com/~tkyte/ Oracle Magazine: http://www.oracle.com/oramag Opinions are mine and do not necessarily reflect those of Oracle CorpReceived on Fri Jun 08 2001 - 10:04:40 CDT