Error with immediate execution in Oracle 10 g of form
Hi all
I use Oracle Forms 10 g. I have a remote database and I've created a database link to the db. Now, I need to update some data in this database from my system using forms. To do this, I wrote a statement such as:
run immediately "SELECT GLH_CODE_SEQ. NEXTVAL@WB IN '. GLHCODE | ' THE DOUBLE '. (glh_code_seq is a sequence in remote db)
but his error showing as error 591: this feature is not supported in programs on the client side.
then I changed the statement
forms_ddl ("SELECT GLH_CODE_SEQ. NEXTVAL@WB IN '. GLHCODE | (' DOUBLE ');
Now that the error is not burst but the variable is not under any value.
The same statement (forms_ddl) works fine on sql * more.
Someone please help me if I do something wrong or suggest if anything to do about it.
Thank you
Sandeep
write your code in the database accordingly. call function of database forms.
Tags: Oracle Development
Similar Questions
-
ERROR WITH IMMEDIATE EXECUTION (ORA-00936)
Hello
I am trying to implement this statement but I get this error message (ORA-00936)
RUN IMMEDIATELY 'REMOVE'. V_TABLE_DETAIL_NAME | ' WHERE ' | V_COLUMN_DETAIL_NAME |' = ' | TO_CHAR (P_DEL_VAL);
Kind regardsHello
I assume you are using below in the database. Try this...
EXECUTE IMMEDIATE 'DELETE FROM '||V_TABLE_DETAIL_NAME||' WHERE '||V_COLUMN_DETAIL_NAME ||' = '''||TO_CHAR(P_DEL_VAL)||'''';
-Clément
-
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!
-
Procedure failed with ORA-01403, associated with immediate execution, captured
This procedure compiles without error. Its purpose is to copy the sequence of one schema to another object. After it failed with ORA-01403, I added exception code of capture (see the comments in the code).
A few notes:
1. I started the proceedings with exec copy_sequence ('ADDRESS_SEQ', 'SST', 'TEST1');
2. the first sql string is built correctly since I can see in the console output:
Select last_number in the all_sequences where sequence_owner = upper('TSS') and upper('ADDRESS_SEQ') = sequence_name
I can run this SQL command, and returns a real value;
Here is the procedure
SET SERVEROUTPUT ON;
create or replace procedure copy_sequence (seq VARCHAR2, prod_schema VARCHAR2, VARCHAR2 test_schema)
as
Val number (21);
s_sql varchar2 (200);
Start
s_sql: = ' select last_number in the all_sequences where sequence_owner = upper('''|| prod_schema ||'') ') and sequence_name = upper('''||) Seq | " ')';
-immediate' select last_number in the Vale of all_sequences where sequence_owner = upper('''|| prod_schema ||'') ') and sequence_name = upper('''||) Seq | " ')';
Dbms_output.put_line ('sql 1 ' | s_sql);
execute immediate s_sql in val; ---!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! The code does not work here!
Dbms_output.put_line ('val' |) Val);
s_sql: = 'delete the sequence'. test_schema |'. ' || FF.;
Dbms_output.put_line ('sql 2 ' | s_sql);
-execution immediate s_sql;
s_sql: = 'create the sequence'. test_schema |'. ' || Seq |' minvalue maxvalue 1 999999999999999999999 begin by ' | Val | 'increment of 1';
Dbms_output.put_line ('sql 3 ' | s_sql);
-execution immediate s_sql;
-Add the following after procedure thown ORA-01403: no data found
exception when TOO_MANY_ROWS then DBMS_OUTPUT.put_line ('TOO_MANY_ROWS error');
When NO_DATA_FOUND then DBMS_OUTPUT.put_line ('error NO_DATA_FOUND');
While some other then raise_application_error (-20011, "Unknown Exception in this procedure");
end;
/
Hoek wrote:
The user (no SYSTEM, SYS, and SYSTEM are special, you should not use them unless you have TO) execution of the procedure must have the necessary privileges granted directly, bypassing a role...
??? There is nothing special about SYS or SYSTEM in what concerns them stored procedures. SYS by default is granted directly SELECT ANY SEQUENCE, so it does not work for the owner of MS by SYS. SYSTEM is therefore not:
Scott@pdborcl12 > create sequence s;
Order of creation.
Scott@pdborcl12 > create or replace
2 procedure system.p1
3 is
number of v_last_value 4;
5. start
6. Select last_number
7 in v_last_value
8 of all_sequences
9 where sequence_owner = 'SCOTT '.
10 and s = sequence_name ';
11 end;
12.Created procedure.
Scott@pdborcl12 > system.p1 exec.
BEGIN system.p1; END;*
ERROR on line 1:
ORA-01403: no data found
ORA-06512: at "SYSTEM. "P1", line 5
ORA-06512: at line 1Scott@pdborcl12 > grant select on s to the system;
Grant succeeded.
Scott@pdborcl12 > system.p1 exec.
PL/SQL procedure successfully completed.
SY.
-
Hello
Can you help me with this query? My code is
and the error:declare cursor c1 is select table_name, column_name from all_tab_columns where owner = 'COCO'; type type_columns is table of varchar2(500) index by pls_integer; my_type type_columns; v_others varchar2(100); v_sql_stmt varchar2(5000); v_ad_pres varchar2(10) := 'ad_pres'; begin for i in c1 loop v_sql_stmt := 'select '||i.column_name||' into my_type ' ||' from '||i.table_name ||' where '|| lower(i.column_name) ||' = '||q'[']'||'ad_pres'||q'[';]'; --dbms_output.put_line(v_sql_stmt); execute immediate v_sql_stmt; end loop; end; /
Select code from my_type from PIVOT_TEST where id = 'ad_pres ';
declare
*
ERROR on line 1:
ORA-00911: invalid character
ORA-06512: at line 19
Thank youThatz a very rough way to find a value in a column of other tables, hope it's just for debugging something, and not a requirement of the company.
Here's a piece of code I could come up with (not tested and not the best but...)declare lv_qry varchar2(1000) := null; ln_cnt number := 0; v_ad_pres varchar2(10) := 'ad_pres'; begin for i in (select utc.table_name, utc.column_name from user_tab_columns utc where utc.DATA_TYPE = 'VARCHAR2' order by utc.table_name, utc.column_id) loop lv_qry := 'select count('||i.column_name||') from '||i.table_name||' where '||upper(i.column_name)|| ' = '''||v_ad_pres||''''; --dbms_output.put_line(lv_qry); execute immediate lv_qry into ln_cnt; if ln_cnt > 0 then dbms_output.put_line(i.table_name||' : '||i.column_name); end if; end loop; end;
In this way, you can also avoid your mistakes NO_DATA_FOUND.
-
Help with IMMEDIATE EXECUTION and drop
Hi all
We strive to create a procedure to do the following:
* We have in the database of the tables named as C$ _XXXXXXXXX
* We want to drop some of these tables with a common prefix (Fe C$ _1203101)
DECLARE
v_sql VARCHAR2 (300);
BEGIN
SELECT 'DROP TABLE ODISTAG.' | TABLE_NAME | « ; » IN v_sql FROM USER_TABLES WHERE TABLE_NAME LIKE ' C$ _1203101% ';
EXECUTE IMMEDIATE v_sql;
END;
But we are getting this error:
Error report:
ORA-00911: invalid character
ORA-06512: at line 5
00911 00000 - "invalid character".
* Cause: identifiers may not start with any character other than ASCII
letters and numbers. $# _ are allowed after the first
character. May contain identifiers surrounded by doublequotes
any character other than a quotation mark. Other quotes
(q' #... #') cannot use spaces, tabs or as carriage returns
delimiters. For all other settings, consult the SQL language
Reference manual.
* Action:
Any help on this please?
Thank you!You don't need the semicolon.
-
Function in pipeline with immediate execution
Hello Experts,
I created a tube lined function to run immediately, cause of sub condition;
(1) columns where clause dynamically.
(2) I want to know the data stored in above the dynamic columns.
(3) I want to use in the report, so I don't want to insert it into a table.
I have created a TYPE, then thanks to run immediately, I got the query and the result of this query will be stored in the TYPE.
But when you call the function I get
ORA-00932: inconsistent data types: expected - was -.
Below is my function and type, let me know I am wrong and it is my correct logic.
Waiting for your point of view.CREATE OR REPLACE TYPE OBJ_FPD AS OBJECT (LOW_PLAN_NO VARCHAR2 (40), FPD VARCHAR2 (5), SERIAL_NO NUMBER, CEDIA_CODE VARCHAR2 (2), DT DATE); ---- CREATE OR REPLACE TYPE FPD_TBL_TYPE AS TABLE OF OBJ_FPD; ---- CREATE OR REPLACE FUNCTION FUNC_GET_FPD_DATE (P_LOW_PLAN_NO VARCHAR2, P_CEDIA_CODE VARCHAR2, P_SERIAL_NO NUMBER) RETURN FPD_TBL_TYPE PIPELINED AS CURSOR C1 IS SELECT 'FPD' || LEVEL TBL_COL FROM DUAL CONNECT BY LEVEL <= 31; V_STR VARCHAR2 (5000); V_TBL_TYPE FPD_TBL_TYPE; BEGIN FOR X IN C1 LOOP V_STR := 'SELECT A.low_PLAN_NO, A.FPD, A.SERIAL_NO, A.cedia_code, TO_DATE ( SUBSTR (FPD, 4, 5) || ''/'' || TO_CHAR (C.low_PLAN_PERIOD_FROM, ''MM'') || ''/'' || TO_CHAR (C.low_PLAN_PERIOD_FROM, ''RRRR''), ''DD/MM/RRRR'') DT FROM ( SELECT low_PLAN_NO, ' || '''' || X.TBL_COL || '''' || ' FPD, ' || X.TBL_COL || ' SPTS, SERIAL_NO, cedia_code FROM M_low_PLAN_DETAILS WHERE NVL(' || X.TBL_COL || ',0) > 0 AND SERIAL_NO = ' || P_SERIAL_NO || ' AND cedia_code = ' || '''' || P_CEDIA_CODE || '''' || ' AND low_PLAN_NO = ' || '''' || P_LOW_PLAN_NO || '''' || ') A, M_low_PLAN_DETAILS B, M_low_PLAN_MSTR C WHERE A.low_PLAN_NO = B.low_PLAN_NO AND A.cedia_code = B.cedia_code AND A.SERIAL_NO = B.SERIAL_NO AND B.low_PLAN_NO = C.low_PLAN_NO AND B.CLIENT_CODE = C.CLIENT_CODE AND B.VARIANT_CODE = C.VARIANT_CODE CONNECT BY LEVEL <= SPTS'; EXECUTE IMMEDIATE V_STR INTO V_TBL_TYPE; FOR I IN 1 .. V_TBL_TYPE.COUNT LOOP PIPE ROW (OBJ_FPD (V_TBL_TYPE (I).LOW_PLAN_NO, V_TBL_TYPE (I).FPD, V_TBL_TYPE (I).SERIAL_NO, V_TBL_TYPE (I).CEDIA_CODE, V_TBL_TYPE (I).DT)); END LOOP; END LOOP; RETURN; EXCEPTION WHEN OTHERS THEN RAISE_APPLICATION_ERROR (-20000, SQLCODE || ' ' || SQLERRM); RAISE; END;
Kind regardsORA Ash wrote:
This result is coming as FPD4 has 2 as a value, then there will be two records to the result with column date (DT).
Your query is perfect only thing is that I have to go to connect the name of the column immediately above as below;AND FPD = 'FPD14' CONNECT BY LEVEL <= SPTS;
So, if possible, please let me know is there a better way to spend the column name, to get the correct data.
Well, we don't have any example for working with information and the expected results of these data in the example, then it is very difficult for us to understand exactly what is affected by the query.
What happens if you delete the connection by clause? Why must you connect him by clause in your query? It is not clear what you include that for (like I said).
-
problem with immediate execution
Hi all
I use 10g db.
I wrote a database procedure. When I call front end (forms 6i) I get the error message
and here is my procedureORA-00911: invalid character ORA-06512:at schema.update_tables line 10
What could be gone bad?create or replace procedure update_tables is BEGIN declare lstring varchar(100) := 'update '; lvalue varchar2(10) := 'LVM'; begin for i in (select table_name,column_name from user_tab_columns where column_name like '%_COMPANY') loop lstring := lstring||i.table_name || ' set '||i.column_name || '= ' || chr(39) || lvalue || chr(39) || ' ; ' ; execute immediate lstring; end loop; end; END; /
Thank you...
Published by: GD on May 19, 2012 21:36Is chr (39) a quote on your system?
Did you try my example or something else?
(I've tried before, I posted it).Here is a complete example.
I changed it to my previous post to use a variable binding to remove the tank (39).
It will also help if lvalue contains a quote.create table hutest (my_company varchar2(30)); Table created. insert into hutest values('djhg'); 1 row created. create or replace procedure update_tables is BEGIN declare lstring varchar(100) := 'update '; lvalue varchar2(10) := 'LVM'; begin for i in (select table_name,column_name from user_tab_columns where column_name like '%_COMPANY') loop lstring := lstring||i.table_name || ' set '||i.column_name || '= :val'; dbms_output.put_line(lstring); execute immediate lstring using lvalue; end loop; end; END; / Procedure created. set serveroutput on size 20000 exec update_tables update HUTEST set MY_COMPANY= :val <------ From dbms_output PL/SQL procedure successfully completed. select * from hutest; MY_COMPANY ------------------------------ LVM 1 row selected.
Published by: HU 2012-05-20 08:59
-
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.
-
Hello people can help you Execute Immediate below set out? I'm a little confused on how to use it.
#!/bin/sh sqlplus -s ${DB_USER} << EOF SELECT 'ALTER TABLE PANDORA.'||table_name||' DROP PARTITION '||partition_name||';' FROM user_tab_partitions WHERE TABLE_NAME IN ('SIU', 'NGME') AND partition_name = (SELECT MIN(partition_name) FROM user_tab_partitions WHERE TABLE_NAME IN ('NGME') AND partition_name <> 'DUMMY' ); SELECT 'ALTER TABLE PANDORA.'||table_name||' ADD PARTITION WEEK'||TO_CHAR(TO_NUMBER(REPLACE(partition_name,'WEEK'))+1)||';' FROM user_tab_partitions WHERE TABLE_NAME IN ('SIU', 'NGME') AND partition_name = (SELECT MAX(partition_name) FROM user_tab_partitions WHERE TABLE_NAME IN ('NGME') AND partition_name <> 'DUMMY' ); SELECT 'ALTER INDEX PANDORA.IDX_SERVED_IMSI MODIFY PARTITION '||partition_name||' UNUSABLE;' FROM user_tab_partitions WHERE TABLE_NAME = 'SIU' AND partition_name = (SELECT MAX(partition_name) FROM user_tab_partitions WHERE TABLE_NAME IN ('NGME') AND partition_name <> 'DUMMY' ); EXIT EOF
Thank you in advance.
Something like
BEGIN
I'm IN)
SELECT table_name, nom_partition
Of user_tab_partitions
WHERE TABLE_NAME IN ("SIU", "NGME")
AND nom_partition = (SELECT MIN (partition_name)
Of user_tab_partitions
WHERE TABLE_NAME IN ("NGME")
AND nom_partition <> 'DUMMY '.
)
) LOOP
RUN IMMEDIATELY "ALTER TABLE PANDORA." | i.table_name |' DROP PARTITION '. i.PARTITION_NAME;
END OF LOOP:
END;
NOT TESTED.
-
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>
-
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
-
Hello
It would be helpful to me if someone can give me instructions on setting the version of driver or oracle client required to connect to the the Oracle DB using excel VBA
My config: -.
Windows - 8-64 bit
Excel 2013-32 bit
The components of the client / I should install, and how to solve the question below...
I tried the VBA code... but you are prompted with the error message above
Void Oracle()
Con Dim As ADODB. Connection
Dim rs As ADODB. Recordset
Dim query As String
The con value = New ADODB. Connection
Set rs = New ADODB. Recordset
strCon = "Driver = {Microsoft ODBC for Oracle}"; "." & _
"CONNECTSTRING = (DESCRIPTION ="& _.
"(ADDRESS =(PROTOCOL=TCP)"& _
"(HOST = HostNumber)(PORT=PortNumber))" & _
"(CONNECT_DATA = (SID = SIDNumber))); UID = username; pwd = password; »
con. Open (strcon)
If err. <>Number 0 then
MsgBox ("Oracle error:" & vbCrLf & err.) Description)
On the other
MsgBox ("Oracle DB Connection successful.")
End If
End Sub
I'll replace it with the values of host origin...
Thanks for the suggestion you till u gave...
complete solution is in the link below...
https://itkbs.WordPress.com/2014/07/28/how-to-install-ODBC-driver-for-Oracle-in-Windows-7/
-
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:
Thanks in advanceEXECUTE 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;
Hello
your query works very well. It updates only the first 10 rows based on the place where the condition.Thank you.
-
Another user changed the row with a primary key oracle.jbo.Key]
I see many discussions about this error, but still cannot understand the difficulty that I need in my scenario.
I am an Oracle Developer and completely new to ADF, please bear with me.
I use JDeveloper 11.1.1.9.0
My scenario:
Creates an object editable view (UVO) with sub selects in the query, which is from several db tables.
Creating a table using the UVO
When I try to update a field in the table, and then click the validate, I get the error message:
Another user changed the row with a primary key oracle.jbo.Key]
Can someone explain in what scenarios I see this error and how do I solve this problem?
Try the viewObject execution after validation and reQueryOnCommit set to true
For details see - binary: a reason more for "Houston-25014: another user has modified the line containing oracle.jbo.Key primary key '
Ashish
Maybe you are looking for
-
PIPs in AAC files created from CD Track-At-Once
When you create AAC from the former track-at-once files * CD Redbook 12.4.3.1 iTunes, I get an annoying hiccups in the first 2 seconds of each song. Looks like the split second of audio is repeated. Everyone knows about this problem? The CD-ROM drive
-
problems with the firefox search engine
When using my hotmail email today when I I closed it got stuck with the msn home page, I have managed to recover the firefox home page, but the search is made by BING, I don't want that I want as before google. It seems if be produced since firefox 1
-
Modification of the properties-type def drop-down list box
I have a group of 32 cases of a def type. The def type contains several different types of control. What I have to do is to change the properties of the list box for each of the type defs. Normally, I would create an array of references to change the
-
A1 7 "help please. I want to calibrate the touch screen
help please. I want to calibrate the touch screen and I get touch calibration failed. "my tablet is lenovo ideapad a1 7" Oppressed accidentally touch calibration and restart the Tablet, but it is now very sencible and just put my finger is selected.
-
How can I determine that trusted root certificates in the Certification authorities are all valid
I was looking in the Lenovo Superfish Adware (I have her, much less a Lenovo) and I read an article in PC world who said Superfish installs a root certificate self-produced in the Windows certificate store for trusted root Certification authorities,