Update in immediate execution with rownum
Can I put in an UPDATE by immediate execution that only maximum 10 lines will be updated?It is:
EXECUTE IMMEDIATE 'UPDATE A_PAZIENTI_ESAMI SET '||
' NREFERTO = :1, '||
' DATA_REFERTO = :2, '||
' ANNOREFERTO = :3, '||
' DATA_EROGAZ = :4, '||
' STATO_REFERTO = :5, '||
' MEDICO_E = :6 '||
' WHERE '|| WHERE_CLAUSE_ESA
--
|| ' and rownum <= 10' -- this is my doubt
--
USING AP_REFERTOB.NREFERTO,
AP_REFERTOB.DATARF,
EXTRACT (YEAR FROM AP_REFERTOB.DATARF) ,
AP_REFERTOB.DATAEROGA,
STATOREFERTO,
AP_REFERTOB.K_MED;
COMMIT;
Thanks in advance
Hello
your query works very well. It updates only the first 10 rows based on the place where the condition.
Thank you.
Tags: Database
Similar Questions
-
Simple question about immediate execution with cursor
Hi all
I have a slider that retrieves the username from dba_users. My question is how can I execute this statement (SELECT DBMS_METADATA. GET_GRANTED_DDL ('ROLE_GRANT', USERNAME) FROM DBA_USERS; ) with my cursor. Thank you.
DECLARE
uname varchar2 (30);
CURSOR c1 IS
SELECT username from dba_users;
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO uname;
RUN IMMEDIATELY "SELECT DBMS_METADATA. GET_GRANTED_DDL ('ROLE_GRANT', uname) FROM DBA_USERS; PROBLEM HERE
Dbms_output.put_line (uname);
OUTPUT WHEN c1% NOTFOUND;
END LOOP;
CLOSE c1;
END;
/
DECLARE
uname varchar2 (30);
CURSOR c1 IS
SELECT username from dba_users;
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO uname;
OUTPUT WHEN c1% NOTFOUND;
RUN IMMEDIATELY "SELECT DBMS_METADATA. GET_GRANTED_DDL ("ROLE_GRANT", "' | uname |) ') FROM DUAL';
Dbms_output.put_line (uname);
END LOOP;
CLOSE c1;
END;
/
But why do you need dynamic SQL statements? And why do you need PL/SQL at all? All your code is nothing but:
SELECT user name,
DBMS_METADATA. GET_GRANTED_DDL ('ROLE_GRANT', username)
OF DBA_ROLE_PRIVS.
DBA_USERS
WHERE username = grantee
/
SY
-
Update not available with immediate execution?
Hello;
When I run this code, I get no error (s) (and I see the dbms_output [UPDATE]) but the update is not effective:
What is the problem? Thanks for your help, regards.WHENEVER OSERROR EXIT OSCODE set head off set scan on set verify off set flush off set feedback off set linesize 410 set pagesize 0 set serveroutput on size 1000000 DECLARE ... BEGIN collection := get_tables_with_column('REF_PLAN'); ... IF ... THEN dbms_output.put_line('[UPDATE]'); EXECUTE IMMEDIATE 'UPDATE ' || collection(i) ||' SET REF_PLAN=:quatre_champ WHERE FAM_SIM=:prem_champ AND PRISE_V1P=:deux_champ AND BROCHE_V1P=:trois_champ' USING quatre_champ,prem_champ,deux_champ,trois_champ; COMMIT; ...
Well, add:
dbms_output.put_line(SQL%ROWCOUNT);
after EXECUTE IMMEDIATE. Most likely update targets 0 lines. If so, print and check the prem_champ, the deux_champ, the values of trois_champ.
SY.
-
Changing table via the package with immediate execution (problem)
Hello
I have a unusual problem. I have a package that contains the procedure that via execute immediate statement, creates a table on which he performs different actions for example:
-alter table some_owner.dummy_table noparallel
-create index some_owner.idx_name on some_owner.dummy_table (column)...
But I only managed to run move and create synonym table/public via execute immediate statement. Actions as alter table and create index fails with error ORA-01031: insufficient privileges.
Note If call these commands outside the package (a simple script) this all done OK.
I found a way, where I set the AUTHID CURRENT_USER command create package statement. In this way all the actions executed OK.
I wonder why I can't change the table via the package with immediate execution on a table that is in the tablespace "SOME_TABLESPACE" and the title of owner "SOME_OWNER", without putting the AUTHID command on the package.
There must be a problem why a package cannot change the table which is owned by the user 'SOME_OWNER '.
All useful responses would be appreciated.
I have a unusual problem.
No - you don't have. This question has been answered SEVERAL times on this forum and others.
But I only managed to run move and create synonym table/public via execute immediate statement. Actions as alter table and create index fails with error ORA-01031: insufficient privileges.
OK - your username doesn't have privileges to do these operations or only received privileges through roles.
Roles are DISABLED in named PL/SQL blocks that use of the AUTHOR's rights.
Note If call these commands outside the package (a simple script) this all done OK.
I found a way, where I set the AUTHID CURRENT_USER command create package statement. In this way all the actions executed OK.
Of course - the roles are NOT disabled in named PL/SQL blocks that use the rights of the APPELLANT or in anonymous blocks.
I wonder why I can't change the table via the package with immediate execution on a table that is in the tablespace "SOME_TABLESPACE" and the title of owner "SOME_OWNER", without putting the AUTHID command on the package.
Well now you know!
-
Appeal procedure set up by IMMEDIATE EXECUTION
Package: my_packageSQL> Create table bipul_test (a number(3), b number(2), c number(5), d varchar2(10), status varchar2(10)); Table Created. SQL> desc bipul_test Name Null? Type ----------------------------------------- -------- ---------------------------- A NUMBER(3) B NUMBER(2) C NUMBER(5) D VARCHAR2(10) STATUS VARCHAR2(10) SQL> insert into bipul_test values(1,1,1,'a', null); SQL> insert into bipul_test values(1,1,1,'b', null); SQL> insert into bipul_test values(2,1,2,'c', null); SQL> insert into bipul_test values(2,2,2,'d', null); SQL> insert into bipul_test values(null, null, null, 'x',null); SQL> commit; SQL> select * from bipul_test; A B C D STATUS ---------- ---------- ---------- ---------- ---------- 1 1 1 a 1 1 1 b 2 1 2 c 2 2 2 d x
Procedure: proc2, proc3
The Code of the appellant:CREATE OR REPLACE PACKAGE SRGUPTA.my_package AS -- PROCEDURE proc2; PROCEDURE proc2 (status OUT varchar2); PROCEDURE proc3 (Proc_name IN VARCHAR2, status IN OUT varchar2); END my_package; / CREATE OR REPLACE PACKAGE BODY SRGUPTA.my_package IS -- PROCEDURE proc2 PROCEDURE proc2(status OUT varchar2) AS n number(2); BEGIN update bipul_test set status ='SUCCESS' where A=1; commit; status:='FAILURE'; end proc2; PROCEDURE proc3 (proc_name varchar2, status IN OUT varchar2) AS x varchar2(100):=null; BEGIN --EXECUTE IMMEDIATE 'BEGIN '||proc_name||'; END;'; EXECUTE IMMEDIATE 'BEGIN '||proc_name||'(status); END;'; if status='FAILURE' then update bipul_test set status ='FAILURE' where A=2; commit; end if; end proc3; END my_package; /
Without THE normal execution mode param works very well. Above code is an effort through which I tried to capture the value of OUT to the appellant PROC3 param.set feedback on set serveroutput on DECLARE status VARCHAR2(100):=''; begin my_package.proc3('my_package.proc2', status); end; / EXIT;
PROC3 call PROC2 with immediate execution. Now if PROC2 have a parameter OUT and I want to capture in PROC3, is it possible?
Out of desire to my code:
Published by: handsome June 3, 2011 06:29SQL> select * from bipul_test; A B C D STATUS ---------- ---------- ---------- ---------- ---------- 1 1 1 a SUCCESS 1 1 1 b SUCCESS 2 1 2 c FAILURE 2 2 2 d FAILURE x
SQL> Create table bipul_test (a number(3), b number(2), c number(5), d varc (10)); Table created. SQL> insert into bipul_test values(1,1,1,'a', null); 1 row created. SQL> SQL> insert into bipul_test values(1,1,1,'b', null); 1 row created. SQL> insert into bipul_test values(2,1,2,'c', null); 1 row created. SQL> insert into bipul_test values(2,2,2,'d', null); 1 row created. SQL> insert into bipul_test values(null, null, null, 'x',null); 1 row created. SQL> commit; Commit complete. SQL> select * from bipul_test; A B C D STATUS ---------- ---------- ---------- ---------- ---------- 1 1 1 a 1 1 1 b 2 1 2 c 2 2 2 d x
SQL> CREATE OR REPLACE PACKAGE my_package AS 2 -- PROCEDURE proc2; 3 PROCEDURE proc2(status OUT varchar2); 4 PROCEDURE proc3(Proc_name IN VARCHAR2, status IN OUT varchar2); 5 END my_package; 6 / Package created. SQL> CREATE OR REPLACE PACKAGE BODY my_package 2 IS 3 -- PROCEDURE proc2 4 PROCEDURE proc2(status OUT varchar2) 5 AS 6 n number(2); 7 BEGIN 8 update bipul_test set status ='SUCCESS' where A=1; 9 commit; 10 status:='FAILURE'; 11 end proc2; 12 13 PROCEDURE proc3 (proc_name varchar2, status IN OUT varchar2) 14 AS 15 x varchar2(100):=null; 16 BEGIN 17 --EXECUTE IMMEDIATE 'BEGIN '||proc_name||'; END;'; 18 EXECUTE IMMEDIATE 'BEGIN '||proc_name||'(:1); END;' USING IN OUT status; 19 20 if status='FAILURE' then 21 update bipul_test set status ='FAILURE' where A=2; 22 commit; 23 end if; 24 end proc3; 25 END my_package; 26 / Package body created. SQL> set serverout on SQL> DECLARE 2 status VARCHAR2(100):=''; 3 begin 4 my_package.proc3('my_package.proc2', status); 5 dbms_output.put_line(status); 6 end; 7 / FAILURE PL/SQL procedure successfully completed. SQL>
-
SQL dynamic immediate execution
Hi all
We have a table where we keep the query that will be executed and using bind variables.
But im facing some problems when I try to use it in immediate execution.
guess
function validate is
varaux varchar2 (200);
Start
for r1 in (select query,
using_bind
from table_1) loop
run immediately r1.query in varaux using r1.using_bind;
Return varaux;
end loop;
Returns a null value.
end;
I know that's not the way to do it, but can you give me instructions in the topic...
Thank you
Bruna
Published by: Bruna on January 4, 2013 03:07>
We have a table where we keep the query that will be executed and using bind variables.But im facing some problems when I try to use it in immediate execution.
>
No - the problems you are experiencing are because your function uses invalid syntax. The problems have NOTHING to do with 'run immediately '. This works for me and no changes have been made to the dynamic part.create or replace function fn_validate return varchar2 is varaux varchar2(200); begin for r1 in (select 'select ename from emp where empno = :1' query, 7369 using_bind from dual) loop execute immediate r1.query into varaux using r1.using_bind; return varaux; end loop; return null; end; declare myVar varchar2(200); begin myVar := fn_validate(); dbms_output.put_line(myVar); end; SMITH
-
How how to escape double match in immediate execution in the trigger
Hi all
Please inform me what is the error in this procedure.
I think that the problem in the way to escape double match.
SQL > create or replace procedure P2
2 is
3. start
4 run immediately 'create or replace trigger t2.
5 |' before insertion '
6: ' on tb_test'
7: ' for each row '
8: ' declare '
9: ' start '
* 10 |' immediate execution "create table t1 as select distinct (NVL (soundex (namess),"'NONE "')) test ' *;
11: ' end; »
12 end;
13
14.
CAUTION: Procedure created with compilation errors.
SQL > show error
Errors of PROCEDURE P2:
LINE/COL ERROR
-------- -----------------------------------------------------------------
10/83 PLS-00103: encountered the symbol "NONE" when expecting one of
What follows:
* & = - + ; <>/ is mod remains not return rem
return < an exponent (*) > <>or! = or ~ = > = < = <>and or
as like2 like4 likec between using | Member in bulk
submultiset
SQL >Hello
Try the code below:
create or replace procedure P2
is
Start
run immediately "create or replace trigger t2 before insertion
on tb_test
for each line
declare
Start
run immediately "create table t1 as select distinct (NVL (soundex (account_number),"NONE")) of the test";
end;';
end;
/ -
difference btw dbms_sql.execution and immediate execution
Hello
IAM using 10g, difference btw immediate.please dbms_sql.execution and execution to tell me.797525 wrote:
IAM using 10g, difference btw immediate.please dbms_sql.execution and execution to tell me.
SQL all (and all the anonymous PL/SQL blocks) are analyzed by Oracle as a SQL cursors. These cursor structures are stored in the Shared Pool in the SGA (shared memory area which are essentially the "brain" of the database instance).
Once a cursor was created for a statement SQL, how to use and interface with this SQL cursor on the server (from the point of view of the customer)?
We use on the client side, a calling interface (or API) that allows our code to interact with this SQL cursor on the server. This interface can be ODBC. Or BDE. Or ADO. Or many other 3-4 letters for database interfaces.
PL/SQL is also a language of 'customer' from a SQL perspective. Such as Java and c#, the code PL/SQL will be calls to the SQL engine to analyze and create SQL cursors.
Of course, PL/SQL differs in 2 areas. It runs in the process of the Oracle server. It is the neighbour of the SQL engine.
For this reason, PL/SQL is much more perfectly integrated with the SQL than Java or c#.
But even in spite of this integration, you still need an interface in the client (PL/SQL) to interact with the SQL cursor, that you have created. In PL/SQL, there are a number of such interfaces customer.
There are explicit and implicit cursors. And there are sliders DBMS_SQL and reference. And there are implicit cursors created through immediate enforcement.
The difference between DBMS_SQL and immediate execution is therefore a difference in customer language interface. The SQL cursor on the server (in the shared Pool) doesn't know what customer interface is used. He cares not.
Client side, each of these client interfaces to a SQL cursor has a different function. And determines which one to use.
run immediately , it's fast and easy for dynamic SQL, but it cannot be used to determine the structure (called projection SQL) returned by a cursor to Select . So despite the dynamic SQL code, we must always know the encoding of time, just what this slider will return to consume its production.
DBMS_SQL to 'describe' the cursor SQL projection. So, we can create a dynamic Select SQL cursor. We can question its interface describe in order to determine the number, names and the data types of the columns returned. It can be removed these column values dynamically and consume the cursor.
There are therefore a major difference in the two feature sets. Tools for interfacing with the same SQL cursor.
So the main points to remember are:
-all SQL liquidation as SQL cursors on the server
-you have different interfaces in the language of the client to interact with a SQL cursor+
+ Your mission as a programmer, if you choose to accept it, is to determine which of these client interfaces is better suited to meet the requirements in your code.
This message will self-destruct in... 5.4.3 2...
-
HELP-immediate execution in PL/SQL has received the error ORA-00904: invalid identifier
What is the problem with the following codes from PL/SQL (actually it comes to Oracle Metalink Note: 313175.1):
===========
declare
cursor c1 is select * from $ semantic;
v_statement VARCHAR2 (255);
v_nc number (10);
v_nt number (10);
Start
immediate execution
"select count (*) from $ semantics" in v_nc;
immediate execution
' select count (distinct s_table_name) of semantics$ "in v_nt;
dbms_output.put_line
('Edit' | v_nc |) 'columns ' | v_nt | "tables");
to r1 c1 loop
v_statement: = 'ALTER TABLE ' | R1.s_owner | '.' || R1.s_table_name;
v_statement: = v_statement | «change (' |)» R1.s_column_name | ' ';
v_statement: = v_statement | R1.s_data_type | ' (' | r1.s_char_length;)
v_statement: = v_statement | ' CHAR))';
immediately run v_statement;
end loop;
dbms_output.put_line ('Done');
end;
/
=====
Executed once the codes as sysdba against 10gr 2 database, I got this error:
From build to select columns to change
Editing columns 4428 35249
declare
*
ERROR on line 1:
ORA-00904: invalid identifier
ORA-06512: at line 22
I see nothing wrong with the line of "immediate execution". I appreciate your help!
Thank you.Hello
Try to print the offending instruction using exception, I used small test cases by changing the pl/sql block, you may need to change to respond to all other types of data in this table.CREATE TABLE semantics$ AS SELECT USER AS owner, table_name, data_type AS s_data_type, column_name, data_length AS s_char_length FROM cols WHERE table_name = 'MY_OBJECTS'; DECLARE CURSOR c1 IS SELECT * FROM semantics$; v_statement VARCHAR2 (255); v_nc NUMBER (10); v_nt NUMBER (10); BEGIN EXECUTE IMMEDIATE 'select count(*) from semantics$' INTO v_nc; EXECUTE IMMEDIATE 'select count(distinct table_name) from semantics$' INTO v_nt; DBMS_OUTPUT.put_line( 'ALTERing ' || v_nc || ' columns in ' || v_nt || ' tables'); FOR r1 IN c1 LOOP v_statement := 'ALTER TABLE ' || r1.owner || '.' || r1.table_name; v_statement := v_statement || ' modify (' || r1.column_name || ' '; v_statement := v_statement || r1.s_data_type || '(' || r1.s_char_length; IF (r1.s_data_type = 'NUMBER') THEN v_statement := v_statement || '))'; ELSE v_statement := v_statement || ' CHAR))'; END IF; DBMS_OUTPUT.put_line (v_statement); -- EXECUTE IMMEDIATE v_statement; END LOOP; DBMS_OUTPUT.put_line ('Done'); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line ('Statement = ' || v_statement); DBMS_OUTPUT.put_line (SUBSTR (SQLERRM, 1, 200)); RAISE; END;
_ Output
ALTERing 13 columns in 1 tables ALTER TABLE MY_OBJECTS modify (OWNER VARCHAR2(30 CHAR)) ALTER TABLE MY_OBJECTS modify (OBJECT_NAME VARCHAR2(30 CHAR)) ALTER TABLE MY_OBJECTS modify (SUBOBJECT_NAME VARCHAR2(30 CHAR)) ALTER TABLE MY_OBJECTS modify (OBJECT_ID NUMBER(22)) ALTER TABLE MY_OBJECTS modify (DATA_OBJECT_ID NUMBER(22)) ALTER TABLE MY_OBJECTS modify (OBJECT_TYPE VARCHAR2(19 CHAR)) ALTER TABLE MY_OBJECTS modify (CREATED DATE(7 CHAR)) ALTER TABLE MY_OBJECTS modify (LAST_DDL_TIME DATE(7 CHAR)) ALTER TABLE MY_OBJECTS modify (TIMESTAMP VARCHAR2(19 CHAR)) ALTER TABLE MY_OBJECTS modify (STATUS VARCHAR2(7 CHAR)) ALTER TABLE MY_OBJECTS modify (TEMPORARY VARCHAR2(1 CHAR)) ALTER TABLE MY_OBJECTS modify (GENERATED VARCHAR2(1 CHAR)) ALTER TABLE MY_OBJECTS modify (SECONDARY VARCHAR2(1 CHAR)) Done
Concerning
Published by: OrionNet on January 5, 2009 23:53
Published by: OrionNet on January 5, 2009 23:55
-
is the new compatible update 37.0.1 with the norton toolbar? If not when?
is the new compatible update 37.0.1 with the norton toolbar? If not when?
According to Norton, he works with 37, https://community.norton.com/en/blogs/product-update-announcements/firefox-37-support-norton-toolbar
-
After update my Pro iPad with iOS 9.3 iPad crashes on Safari. Example I googled something results appear, but I am not able to enter any page
It seems that it is a result of the update. Other users report it, and I also read that Apple is aware of the problem and working on a fix. Be patient and watch for an update. Some have reported that disabling Java script has worked for them. You need to check yourself.
-
After the 10.11.4, update Mac mini wake with WOL
After the 10.11.4, update Mac mini wake with WOL.
I have a recovery Partition, but it does not start in Recovery (⌘R)
How to return to 10.11.3 (or fix the WOL)
Holding down option at startup gives me the optional recovery partition (I forgot about this!).
I can now return to 10.11.3
-
Automatic update of the combo with VI saved to a folder box
Hello everyone
I am completely new to labview... Could someone help me how can I automatically update the combobox control with the files I have saved in a folder on my PC. Thanks in advance
Best regards
Bilel
Yes, I could be more helpful, sorry!
Well, it was like that until replaced LabVIEW code snippet it my property of combo box!
-
Multisim update fails to install with error.
The regular update fails to install with error: an error occurred in the installation of an update. If this error persists contact technical support OR. It comes to Multisim.
How can this be repaired?
Thank you
Multisim is different to the discussion forum... Please post there is http://forums.ni.com/t5/Circuit-Design-Suite-Multisim/bd-p/370
It will help you get a better answer...
Best regards
H S
-
Remove published to WSUS updates that were published with SCUP
Hello
How should be done on the removal of the published in our WSUS database updates that were released with System Center Updates Publisher? Updates, we have published are not displayed in the WSUS administration Console, but displayed the section software upgrades to our System Center Configuration Manager console.
Thank you
Mike
You're in the consumer for Microsoft Security Essentials forum, then you are completely off topic. Visit this forum:http://social.technet.microsoft.com/Forums/en/winserverwsus/threads
-steve
~ Microsoft MVP Windows Live ~ Windows Live OneCare | Live Mesh | MS Security Essentials Forums moderator ~.
Maybe you are looking for
-
My itunes on my computer does not show my iphone 6
When I connect my iPhone 6 with iTunes on my computer the iPhone symbol does not appear on iTunes. How can I get this show
-
How to fix a corrupt Ipod classic
How to fix a corrupt Ipod classic? When I plug my Ipod Classic, it hangs and also my laptop.
-
Need to Diver WLAN for my C50-B14Z Satellite
Hello I had a problem for the recovery of the software on my laptop satellite, so I download a Bing of 8.1 of Windows from the internet.But with the installation, there was no included wirelless driver. So I search the Internet on Satellite wireless
-
Michael Kossar: Concept of 32-bit and 64-bit
I'm Michael kossar, I heard the term 32-bit and 64-bit machine, but what is the concept behind it? Please explain my question.
-
Vista Business license with an ultimate install?
Can I use an oem Vista business with an ultimate installation license? I have a HP PC with the Biz license but no disc, I also have a CD Ultimate & license that I no longer use