Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> Dynamic SQL question
Hello,
I'm trying to write a procedure that includes dynamic sql (8.17). If I don't
use the dynamic sql, the query runs fine. If I do, it fails with a numeric
or value error (ORA-06512).
Can anyone see what I'm missing?
This works:
UPDATE resourcegroup
SET lft = DECODE( (SIGN((lft/drop_left)-1) + SIGN((lft/drop_right)-1)), 0, lft-1, 2, lft-2, lft),
rgt = DECODE( (SIGN((rgt/drop_left)-1) + SIGN((rgt/drop_right)-1)),
0, rgt-1, 2, rgt-2, lft)
WHERE lft > drop_left;
This fails:
v_update := 'UPDATE '|| in_tablename ||
'SET lft = DECODE( (SIGN((lft/:1)-1) + SIGN((lft/:2)-1)), 0,
lft-1, 2, lft-2, lft), '||
'rgt = DECODE( (SIGN((rgt/:3)-1) + SIGN((rgt/:4)-1)), 0, rgt-1,
2, rgt-2, lft) ' ||
'WHERE lft > :5';
EXECUTE IMMEDIATE v_update USING drop_left, drop_right, drop_left, drop_right, drop_left;
I'm just using the linewrap concantenation for use of readability for testing. It fails when it's all on one line as well.
Thanks.
-Deanna
-- Archives are at http://www.freelists.org/archives/oracle-l/ FAQ is at http://www.freelists.org/help/fom-serve/cache/1.html -----------------------------------------------------------------Received on Fri Mar 19 2004 - 15:20:45 CST
![]() |
![]() |