Problem in using CREATE TABLE with Execute Immediate
I'm trying to create a table using Native Dynamic SQL. the code of the pl/sql block is
BEGIN
EXECUTE IMMEDIATE 'create table demo (ddate date)';
END;
The problem is that the above block is executed successfully as an anonymous PL/SQL block. The same block when written in a procedure it gives an error
"ORA-01031 Insufficient privelages"
at the time of execution. The procedure is complied successfully.
null
Your user needs direct system privs to create tables. You are receiving your privs properly by the role RESOURCE. Connect as system and grant CREATE TABLE directly to your user - that should do it.
Regards
Peter Larsen
Similar Messages
-
Using RETURNING clause with Execute Immediate
I wrote a query to update a table and return the column in to a nested table type variable using returning clause but its not working I am getting error like
ORA-06550: line 66, column 22:
PLS-00306: wrong number or types of arguments in call to '||'
ORA-06550: line 66, column 4:
PL/SQL: Statement ignored
I am getting error in following part of my query
|| 'RETURNING if_row_status bulk collect INTO '
|| v_if_row_status;
v_if_row_status is defined as -
TYPE v_count IS TABLE OF varchar2(50) INDEX BY BINARY_INTEGER;
v_if_row_status v_count;I am trying to update a table for diffrent column if they are null and want no of column updated for each column.
I wrote following query but I am not getting the correct output.
UPDATE
Temp_Bulk_Col_POC
SET if_row_status = 'VALIDATED',
if_row_processed_date = sysdate,
if_row_error_msg =
CASE
WHEN record_type IS NULL
THEN 'RECORD_TYPE is a required column and cannot be NULL'
WHEN source_system IS NULL
THEN 'SOURCE_SYSTEM is a required column and cannot be NULL'
WHEN record_company IS NULL
THEN 'RECORD_COMPANY is a required column and cannot be NULL'
WHEN record_system IS NULL
THEN 'RECORD_SYSTEM is a required column and cannot be NULL'
WHEN txn_flag IS NULL
THEN 'TXN_FLAG is a required column and cannot be NULL'
WHEN create_date IS NULL
THEN 'CREATE_DATE is a required column and cannot be NULL'
WHEN UPDATE_date IS NULL
THEN 'UPDATE_DATE is a required column and cannot be NULL'
WHEN source_customer_id IS NULL
THEN 'SOURCE_CUSTOMER_ID is a required column and cannot be NULL'
WHEN source_product_id IS NULL
THEN 'SOURCE_PRODUCT_ID is a required column and cannot be NULL'
WHEN az_product_id IS NULL
THEN 'AZ_PRODUCT_ID is a required column and cannot be NULL'
WHEN decile IS NULL
THEN 'DECILE is a required column and cannot be NULL'
END
WHERE if_row_status IS NULL
AND (record_type IS NULL
OR source_system IS NULL
OR record_company IS NULL
OR record_system IS NULL
OR txn_flag IS NULL
OR create_date IS NULL
OR UPDATE_date IS NULL
OR source_customer_id IS NULL
OR source_product_id IS NULL
OR az_product_id IS NULL
OR decile IS NULL)
RETURNING if_row_status,record_type,source_system,record_company,record_system,
txn_flag,create_date,UPDATE_date,source_customer_id,source_product_id,az_product_id,
decile
BULK COLLECT INTO
v_if_row_status,v_record_type,v_source_system,
v_record_company,v_record_system,v_txn_flag,v_create_date,v_UPDATE_date,
v_source_customer_id,v_source_product_id,v_az_product_id,v_decile;
its showing same number for all the column.
how I can collect based on the coulmn updated -
Problem CREATE TABLE with PRIMARY KEY Still in Trouble ! Please Help!
Hi there !
I use the orcle 8i, and i don't know why i can't create table with any primary key EXample:
SQL> CREATE TABLE O_caisses
2 (No_caisse NUMBER(3) constraint caisses_pk PRIMARY KEY,
3 NB_BILLETS NUMBER(5)
4 )
5 /
CREATE TABLE O_caisses
ERROR at line 1:
ORA-18008: cannot find OUTLN schema
***********some Debuger show me this way: *********************
Well there r certain point u got to notice when creating a table with constraints.
1) U can create table with COLUMN level constraint.
2) U can create table with TABLE level constraint.
3) In COLUMN level constraint u can't give a constraint a name
but only mention the type of constraint.
4) In TABLE level constraint u can give a name to constraint.
Following are the examples of both
--COLUMN LEVEL
CREATE TABLE O_caisses
(No_caisse NUMBER(3) PRIMARY KEY,
NB_BILLETS NUMBER(5));
--TABLE LEVEL
CREATE TABLE O_caisses
(No_caisse NUMBER(3),
NB_BILLETS NUMBER(5),
constraint pk_caisse primary key (No_caisse));
********************And this is another one:*****************
SQL>grant create any outline to username;
BUT the problem is still present, i don't know what to do now !
Please could some body help me !
Thanks alot!
Luong.The clue is in the error message: the OUTLN schema is missing.
This is something Oracle 8i introduced to help manage the CBO (or soemthing equally geeky and internal). For some reason your database no longer has this user. It ought to be created automatically during installation (or upgrade) but catproct may not have completed probably or some over zealous admin type has dropped it.
Solution is to re-install (or re-upgrade) as you cannot create this user on their own. Alas.
HTH, APC -
Problem on CREATING TABLES with PRIMARY KEY
Hi there !
I use the orcle 8i, and i don't know why i can't create table with any primary key EXample:
SQL> CREATE TABLE O_caisses
2 (No_caisse NUMBER(3) constraint caisses_pk PRIMARY KEY,
3 NB_BILLETS NUMBER(5)
4 )
5 /
CREATE TABLE O_caisses
ERROR at line 1:
ORA-18008: cannot find OUTLN schema
Please could some body help me !
Thanks alot!
Luong.Luong,
Your syntax is fine. It looks like you don't have the correct database privileges to create the table. The error message you're getting suggests that you don't have CREATE ANY OUTLINE privileges. You should log in as a user than can grant these privileges and give yourself the correct privileges. I think the syntax is
SQL>grant create any outline to username;
Alison -
OID users ( EUS) problem with grant create table with admin
Hi,
We activated enterprise users in the OID.
There is a role APP_ADMIN that has the following grants:
create user
drop user
create table with admin option
this is for an application that creates BI schemas, so it needs to be able to create other users.
I have granted these to a local role, and the user has access to the local role, thanks to the OID setup.
The create and drop user work.
however, the grant create table to another user does not work.
Is there an issue with 'with admin option' grants in Enterprise user security?
Regards,
PeterIf I grant
grant create table to test_role with admin option;
it does not work
if I grant
GRANT GRANT ANY PRIVILEGE to test_role WITH ADMIN OPTION;
it does work.
The test command as user with test_role is:
grant create table to test_usr;
very strange!
If the user is a standard user and I create role test_role
and grant create table to test_role with admin option it works.
but if I convert the user to an EUS user and the same privilege is given to the role ( role is granted to a global role to an enterprise role)
it doesnt work
Edited by: Peter on Dec 7, 2012 2:36 PM -
Unable to INSERT PL/SQL record with EXECUTE IMMEDIATE
Hi All,
I am selecting data from a source table and after some modification inserting into a target table. Source and target table name are available at run time. You can say only source table structure is fixed.
I have crated a pl/sql table of type source record and inserting record by record in target table using execute immediate. But I am not able to write
EXECUTE IMMEDIATE string USING pl_sql_table(index); and getting error as
PLS-00457: expressions have to be of SQL types
Please see the part of code below. Is it possible to use FORALL with dynamic sql like
FORALL pl_sql_table.FIRST .. pl_sql_table.COUNT
EXECUTE IMMEDIATE .... pl_sql_table(j); -- Like this.
Please suggest why I am not able to write record here. I also want to replace 'INSERT in a loop' with a single INSERT statement out of the loop, to upload whole pl_sql table into target table in one go.
Thanks,
Ravi
DECLARE
TYPE rec_tab_CMP IS RECORD
model_id NUMBER(38),
absolute_rank NUMBER(5)
v_rec_tab_CMP rec_tab_CMP;
TYPE t_rec_tab_CMP IS TABLE OF v_rec_tab_CMP%TYPE INDEX BY BINARY_INTEGER;
v_records_CMP t_rec_tab_CMP;
rc SYS_REFCURSOR;
v_old_table_name VARCHAR2(30); -- passed from parameter
v_new_table_name VARCHAR2(30); -- passed from parameter
dyn_str VARCHAR2(500);
v_columns_str VARCHAR2(200) := ' model_id, absolute_rank ';
BEGIN
EXECUTE IMMEDIATE 'CREATE TABLE '|| v_new_table_name || ' AS SELECT * FROM ' || v_old_table_name ||' WHERE 1 = 2 ' ;
OPEN rc FOR 'SELECT '|| v_columns_str ||' FROM '|| v_old_table_name;
FETCH rc BULK COLLECT INTO v_records_CMP;
FOR j IN 1..v_records_CMP.COUNT
LOOP
v_records_CMP(j).model_id := 1; -- Do someting here, This thing can be performed in SQL stmt directly.
dyn_str := 'INSERT INTO '|| v_new_table_name ||' ( '|| v_columns_str || ' ) VALUES (:1, :2) ';
EXECUTE IMMEDIATE dyn_str USING v_records_CMP(j).model_id ,
v_records_CMP(j).absolute_rank ;
-- Here in place of two columns I want to use one record like
-- EXECUTE IMMEDIATE dyn_str USING v_records_CMP(j);
-- But it is giving me error like
-- EXECUTE IMMEDIATE dyn_str USING v_records_st(j);
-- PLS-00457: expressions have to be of SQL types
END LOOP;
CLOSE rc;
END;
/You cannot bind PL/SQL record types to dynamic SQL.
Possibly you could work around this by declaring the INDEX-BY table of records at package specification level, e.g.
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
SQL> CREATE PACKAGE package_name
2 AS
3 TYPE tt_emp IS TABLE OF emp%ROWTYPE;
4 t_emp tt_emp;
5 END package_name;
6 /
Package created.
SQL> CREATE TABLE new_emp
2 AS
3 SELECT *
4 FROM emp
5 WHERE 1 = 0;
Table created.
SQL> DECLARE
2 v_table_name user_tables.table_name%TYPE := 'NEW_EMP';
3 BEGIN
4 SELECT *
5 BULK COLLECT INTO package_name.t_emp
6 FROM emp;
7
8 EXECUTE IMMEDIATE
9 'BEGIN ' ||
10 ' FORALL i IN 1 ..package_name.t_emp.COUNT ' ||
11 ' INSERT INTO ' || v_table_name ||
12 ' VALUES package_name.t_emp (i); ' ||
13 'END;';
14 END;
15 /
PL/SQL procedure successfully completed.
SQL> SELECT empno, ename
2 FROM new_emp;
EMPNO ENAME
7369 SMITH
7499 ALLEN
7521 WARD
7566 JONES
7654 MARTIN
7698 BLAKE
7782 CLARK
7788 SCOTT
7839 KING
7844 TURNER
7876 ADAMS
7900 JAMES
7902 FORD
7934 MILLER
14 rows selected.
SQL> -
Pipelined Function with execute immediate
Hello Experts,
I have created a Pipe lined function with execute immediate, due to below requirement;
1) Columns in where clause is passed dynamically.
2) I want to know the data stored into above dynamic columns.
3) I want to use it in report, so I don't want to insert it into a table.
I have created a TYPE, then through execute immediate i have got the query and result of that query will be stored in TYPE.
But when calling the function i am getting
ORA-00932: inconsistent datatypes: expected - got -
Below is my function and type, let me know i am going wrong, and is my logic correct.
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;Waiting for your views.
Regards,Ora Ash wrote:
Hello Experts,
I have created a Pipe lined function with execute immediate, due to below requirement;
1) Columns in where clause is passed dynamically.No, that's something you've introduced, and is due to poor database design. You appear to have columns on your table called FPD1, FPD2 ... FPD31. The columns do not need to be 'passed dynamically'
2) I want to know the data stored into above dynamic columns.And you can know the data without it being dynamic.
3) I want to use it in report, so I don't want to insert it into a table.That's fine, though there's no reason to use a pipelined function.
You also have an pointless exception handler, which masks any real errors.
I'm not quite sure what the point of your "connect by" is in your query as we don't have your tables or data or know for sure what the expected output is.
However, in terms of handling the 'dynamic' part that you've introduced, then you would be looking at doing something along the following lines, using a static query that requires no poor dynamic code, and no pipelined function...
with x as (select level as dy from dual connect by level <= 31)
select a.low_plan_no
,a.fpd
,a.serial_no
,a.cedia_code
,trunc(c.low_plan_period_from)+a.dy-1 as dt
from (select low_plan_no
,dy
,'FPD'||dy as fpd
,spts
,serial_no
,cedia_code
from (
select low_plan_no
,x.dy
,case x.dy when 1 then fpd1
when 2 then fpd2
when 3 then fpd3
when 4 then fpd4
when 5 then fpd5
when 6 then fpd6
when 7 then fpd7
when 8 then fpd8
when 9 then fpd9
when 10 then fpd10
when 11 then fpd11
when 12 then fpd12
when 13 then fpd13
when 14 then fpd14
when 15 then fpd15
when 16 then fpd16
when 17 then fpd17
when 18 then fpd18
when 19 then fpd19
when 20 then fpd20
when 21 then fpd21
when 22 then fpd22
when 23 then fpd23
when 24 then fpd24
when 25 then fpd25
when 26 then fpd26
when 27 then fpd27
when 28 then fpd28
when 29 then fpd29
when 30 then fpd30
when 31 then fpd31
else null
end as spts
,serial_no
,cedia_code
from x cross join m_low_plan_details
where serial_no = p_serial_no
and cedia_code = p_cedia_code
and low_plan_no = p_low_plan_no
where nvl(spts,0) > 0
) A
join m_low_plan_details B on ( A.low_plan_no = B.low_plan_no
and A.cedia_code = B.cedia_code
and A.serial_no = B.serial_no
join m_low_plan_mstr C on ( 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;... so just remind us again why you think it needs to be dynamic? -
Disadvantage with 'Execute Immediate'
What is the disadvantage with 'EXECUTE IMMEDIATE'.
I think you guys are missing the point here.
None of the issues listed are 'EXECUTE IMMEDIATE' disadvantages.
'EXECUTE IMMEDIATE' is a tool. Like DMS_SQL. Like ref cursors. Like explicit cursor. Like implicit cursors.
A tool, any tool, needs to be used correctly. If you use a hammer and hit a nail so hard that it bents, causing the hammer to slip doing some serious damage to your thumb... whose fault it is?
Is it The Hammer that is at fault here? Or is the user of that tool?
There are no disadvantages to using 'EXECUTE IMMEDIATE'. It is a tool. But like all tools it needs to be used correctly and safely. Things like excessive hard parsing because of a severe lack of bind variables, or opening a hole for SQL injection, etc.. all these are symptoms of - and let's be blunt here - an ignorant developer. It has nothing to do with the tool 'EXECUTE IMMEDIATE'.
And those same type of errors will be made by Mr Ignorant Developer using other tools in Oracle.
Shoddy workmanship is not because of poor tools. Shoddy code is not because of using a specific feature (like execute immediate).
The proper question to ask is thus not "what are the disadvantages of execute immediate", but rather "where should I typically use execute immediate and how?".
Not every developer will know how to use every single tool in the toolbox (I sure don't know all the tools in the Oracle toolbox). So there is nothing wrong with asking.
But asking what is "wrong" with a tool (aka "what are the disadvantages") is in my view seriously missing the point that a tool is there to solve very specific types of problems...
That is what a developer should be after - How to use the tool correctly. -
How to create indexes using CREATE TABLE statement
Hi,
Can anyone please tell me how to create indexes using CREATE TABLE staement? This point is part SQL Expert exam (1Z0-047) and please guide me to use which books for this particular exam.
Thanks in advance.Can anyone please tell me how to create indexes using CREATE TABLE staement?e.g. creating a primary key or a unique constraint will generate indexes along with the create table syntax:
SQL> create table t (a integer primary key, b integer unique)
Table created.
SQL> select index_name, index_type, uniqueness
from user_indexes
where table_name = 'T'
INDEX_NAME INDEX_TYPE UNIQUENES
SYS_C0016575 NORMAL UNIQUE
SYS_C0016574 NORMAL UNIQUE
2 rows selected. -
Transaction control with execute immediate
Hi, What is the correct way to commit/ rollback transactions when executing a dynamic update statement with execute immediate?
Hi Thanks fo the reply, they don't appear to be. here's my procedure. Is there anything the is obviously wrong?
PROCEDURE p_move_city_numerics ( p_mode IN VARCHAR2,
p_schema IN VARCHAR2,
p_table IN VARCHAR2,
p_destination IN VARCHAR2,
p_city_name IN VARCHAR2,
p_outcome OUT VARCHAR2)
IS
l_valid_object VARCHAR2(200);
l_error_msg VARCHAR2(200);
l_outcome VARCHAR2(2000);
l_sql_count VARCHAR2(2000);
l_sql_update VARCHAR2(2000);
l_record_count NUMBER;
e_object_error EXCEPTION;
BEGIN
l_valid_object := f_is_city_valid (p_schema, p_table, p_destination);
IF l_valid_object != 'VALID' THEN
RAISE e_object_error;
END IF;
l_sql_count := 'SELECT COUNT(*) FROM ' || p_schema || '.' || p_table;
l_sql_count := l_sql_count || ' WHERE UPPER(city) LIKE ' || '''' || '%' || UPPER(p_city_name) || '%' || '''';
l_sql_count := l_sql_count || ' AND ( city LIKE ' || '''' || '%1%' || '''';
l_sql_count := l_sql_count || ' OR city LIKE ' || '''' || '%2%' || '''';
l_sql_count := l_sql_count || ' OR city LIKE ' || '''' || '%3%' || '''';
l_sql_count := l_sql_count || ' OR city LIKE ' || '''' || '%4%' || '''';
l_sql_count := l_sql_count || ' OR city LIKE ' || '''' || '%5%' || '''';
l_sql_count := l_sql_count || ' OR city LIKE ' || '''' || '%6%' || '''';
l_sql_count := l_sql_count || ' OR city LIKE ' || '''' || '%7%' || '''';
l_sql_count := l_sql_count || ' OR city LIKE ' || '''' || '%8%' || '''';
l_sql_count := l_sql_count || ' OR city LIKE ' || '''' || '%9%' || '''';
l_sql_count := l_sql_count || ' OR city LIKE ' || '''' || '%0%' || '''' || ')';
l_sql_update := 'UPDATE ' || p_schema || '.' || p_table;
l_sql_update := l_sql_update || ' SET ' || p_destination || ' = city,';
l_sql_update := l_sql_update || ' city = ' || '''' || p_city_name || '''';
l_sql_update := l_sql_update || ' WHERE UPPER(city) LIKE ' || '''' || '%' || UPPER(p_city_name) || '%' || '''';
l_sql_update := l_sql_update || ' AND ( city LIKE ' || '''' || '%1%' || '''';
l_sql_update := l_sql_update || ' OR ciity LIKE ' || '''' || '%2%' || '''';
l_sql_update := l_sql_update || ' OR city LIKE ' || '''' || '%3%' || '''';
l_sql_update := l_sql_update || ' OR city LIKE ' || '''' || '%4%' || '''';
l_sql_update := l_sql_update || ' OR city LIKE ' || '''' || '%5%' || '''';
l_sql_update := l_sql_update || ' OR city LIKE ' || '''' || '%6%' || '''';
l_sql_update := l_sql_update || ' OR city LIKE ' || '''' || '%7%' || '''';
l_sql_update := l_sql_update || ' OR city LIKE ' || '''' || '%8%' || '''';
l_sql_update := l_sql_update || ' OR city LIKE ' || '''' || '%9%' || '''';
l_sql_update := l_sql_update || ' OR city LIKE ' || '''' || '%0%' || '''' || ')';
IF p_mode = 'SELECT' THEN
EXECUTE IMMEDIATE(l_sql_count) INTO l_record_count;
l_outcome := TO_CHAR(l_record_count) || ' records to be updated!';
ELSIF p_mode = 'UPDATE' THEN
EXECUTE IMMEDIATE(l_sql_count) INTO l_record_count;
EXECUTE IMMEDIATE(l_sql_update);
l_outcome := TO_CHAR(l_record_count) || ' records have been updated!';
COMMIT;
ELSE
l_outcome := ' ERROR - Invalid mode: ' || p_mode || ' has been passed into the function! Valid values are SELECT or UPDATE';
END IF;
EXCEPTION
WHEN e_object_error THEN
IF l_valid_object = 'INVALID_TABLE' THEN
l_outcome := 'ERROR - Not a valid table name: ' || p_schema || '.' || p_table;
ELSIF l_valid_object = 'INVALID_CITY' THEN
l_outcome := 'ERROR - CITY not a valid field in the table: ' || p_schema || '.' || p_table;
ELSIF l_valid_object = 'INVALID_DEST' THEN
l_outcome := 'ERROR - Destination field: ' || p_destination || ' is not a valid field in the table: ' || p_schema || '.' || p_table;
END IF;
WHEN OTHERS THEN
l_error_msg := SQLCODE || '-' || SUBSTR(SQLERRM, 1, 150);
l_outcome := 'ERROR - ' || l_error_msg;
ROLLBACK;
END p_move_city_numerics; -
How to create table with dynamic rows
Hi Ppl,
I have an array lets say with length of n. I want to creata table with 2 columns and no of rows = array length.
lets say array length is 3 ( array[0] = 1, array[1] = 2, array[2] = 3) so the table should have 2 columns and 3 rows.
After creation of table I want to display each array value in each row.
Can somebody help me in this asap.
Thanks \
AshishHi, Thanks for reply... actually this is one part of rtf. I have put values from xml to an array and now I want to create a table with no of rows = length of array. so here xml will not be useful. could you pls think of it without xml.
result is like
lets says below is the array
array[0] = a
array[1] = b
array[2] = c
array length = 3
so there should be a table of 2 coulmns and 3 rows. Second column of first row will show 'a', Second column of second row wil show 'b' and Second column of third row will show 'c'.
Hope this is useful.
Thakns
Ashish -
Execute a DML query its length exceeds 4000 characters with execute immediate statement.
I want to execute a DML query with execute immediate statement. That DML query length exceeds 4000 characters. This query has Xquery related conditions, i can not split the query. when i tried execute it is giving "string literal too long". I tried with DBMS_SQL.Parse() and DBMS_SQL.Execute also, but it is giving same error. I have to execute this DML query inside a Procedure. Please help me to resolve this. We are using oracle 10g version
Thanks & Regards,
K.KedarnadhActually Query is a dynamic query. Query length will exceeds if the no of domains\domain values \products exceeds. Any way Below one is current dynamic query, which is generated within procedure
SELECT
IVT.ID_IVT
,IVT.ID_INS_IVT
,EXTRACTVALUE(IVT.DOCUMENT_IVT,'//productName/text()') AS PRODUCTNAME
,EXTRACTVALUE(IVT.DOCUMENT_IVT,'//elementName/text()') AS INSTANCENAME
,EXTRACTVALUE(IVT.DOCUMENT_IVT,'//elementInternalName/text()') AS INTERNALNAME
,CTG.NAME_CTG
,CTR.NAME_CTR
,MDL.NAME_MDL
,IVT.REEDIT_FLAG_IVT
FROM VARIATION_IVT IVT INNER JOIN CATEGORY_CTG CTG ON CTG.ID_CTG=IVT.ID_CTG_IVT
AND IVT.STATUS_IVT='Active' AND IVT.DELETE_FLAG_IVT=0 AND IVT.ID_PRJ_IVT=1
AND IVT.DOCUMENT_IVT.existsnode('.//domain[domainName="Jurisdictions" and (domainValue="Delhi" or domainValue="Bangladesh" or domainValue="Mumbai" or domainValue="India" or domainValue="Pakistan" or domainValue="Nepal" or domainValue="Maldives" or domainValue="Kolkata" or domainValue="Bhutan" or domainValue="Chennai" or domainValue="ALL")]')=1 AND IVT.DOCUMENT_IVT.existsnode('.//domain[domainName="Channels" and (domainValue="Agents" or domainValue="SBI" or domainValue="Maruti" or domainValue="Direct" or domainValue="CitiFinancial" or domainValue="SCB" or domainValue="BankAssurance" or domainValue="CitiBank" or domainValue="Employees" or domainValue="GE" or domainValue="Brokers" or domainValue="Telemarketing" or domainValue="Agency" or domainValue="ALL")]')=1 AND IVT.DOCUMENT_IVT.existsnode('.//domain[domainName="ModeofDelivery" and (domainValue="Walkin" or domainValue="Internet" or domainValue="ALL")]')=1 AND IVT.DOCUMENT_IVT.existsnode('.//context[(productName="ALL" or productName="A009" or productName="A010" or productName="A046" or productName="AccidentShieldClassic" or productName="AccidentShieldOnline" or productName="AM01" or productName="AM02" or productName="AME_Cancellation" or productName="ARHG" or productName="ARPA" or productName="B003" or productName="B004" or productName="B007" or productName="B008" or productName="B009" or productName="B010" or productName="B012" or productName="B013" or productName="B015" or productName="B016" or productName="B017" or productName="BC04_PA" or productName="BC06_FDP" or productName="BC06_PA" or productName="BC09" or productName="BC10" or productName="BC12" or productName="BC13" or productName="BF03" or productName="BS01" or productName="BS02" or productName="C017" or productName="C035" or productName="C036" or productName="C037" or productName="C038" or productName="C040" or productName="C041" or productName="C041Gold" or productName="C041New" or productName="C045HomeContents" or productName="C048" or productName="C049" or productName="C054" or productName="C057" or productName="C060Building" or productName="C060Contents" or productName="C060FDP" or productName="C061Building" or productName="C061Contents" or productName="C062" or productName="C063" or productName="C067" or productName="C070" or productName="C072" or productName="C074" or productName="C077" or productName="C081" or productName="C082" or productName="C087" or productName="C088" or productName="CITIFOREVER" or productName="CITISECURE" or productName="CITICHILDPLAN" or productName="D001" or productName="DB01" or productName="DD01" or productName="DD02" or productName="DD03" or productName="DD04" or productName="DD09" or productName="DD10" or productName="E005" or productName="E011" or productName="E016" or productName="E020" or productName="E030" or productName="E034" or productName="E040" or productName="E041" or productName="E045HCP" or productName="E045HSP" or productName="E049" or productName="E049New" or productName="E052" or productName="E053" or productName="E054FDP" or productName="E055" or productName="E056" or productName="E057" or productName="E058" or productName="E061" or productName="E061BATCH" or productName="E062" or productName="E063" or productName="E064HCP" or productName="E064HSP" or productName="E066" or productName="E069" or productName="E073" or productName="E075" or productName="E076" or productName="E088" or productName="E090" or productName="E093A" or productName="E093B" or productName="E095" or productName="E099A" or productName="E099B" or productName="E106" or productName="E107" or productName="E110" or productName="E112" or productName="E114" or productName="E115" or productName="E116" or productName="F001" or productName="FamilyHealthInsurance" or productName="FamilyHospitalBenefits" or productName="FamilyHospitalisationCoverBenefit" or productName="G001" or productName="G002" or productName="HealthShieldOnline" or productName="Health_B005" or productName="Health_S057" or productName="HealthSheild" or productName="HealthWalkin" or productName="HomeContentOnline" or productName="HomeShieldOnline" or productName="HomeShieldWalkin" or productName="HospitalCashOnline" or productName="J001" or productName="J008" or productName="K001" or productName="KV02" or productName="LC03" or productName="ML01" or productName="MP02" or productName="MP03" or productName="MR01" or productName="O005" or productName="PO01" or productName="PO02" or productName="PO03" or productName="PO04" or productName="PO05" or productName="PO06" or productName="RR02" or productName="RR03" or productName="RR04" or productName="S006" or productName="S033" or productName="S049" or productName="S051" or productName="S054" or productName="S057" or productName="S060" or productName="S061" or productName="S065" or productName="S065TM" or productName="S068" or productName="S076" or productName="S077" or productName="S079" or productName="S080" or productName="S081" or productName="S084" or productName="S085" or productName="S086" or productName="S087" or productName="S088" or productName="S091" or productName="S092" or productName="S093" or productName="S094" or productName="S095" or productName="S097" or productName="S098" or productName="S099" or productName="S100" or productName="S101" or productName="S102" or productName="S103" or productName="S104" or productName="S106" or productName="S107" or productName="S108" or productName="S109" or productName="S110" or productName="S111" or productName="S113" or productName="SCBNAC" or productName="SF02" or productName="SS01" or productName="SS02" or productName="SUNFHM" or productName="SurgicalShield" or productName="TD01" or productName="TD02" or productName="TP01" or productName="U002Building" or productName="U002Contents" or productName="U004Building" or productName="U007" or productName="U009" or productName="U013" or productName="U014" or productName="U015" or productName="U016" or productName="V001" or productName="V002" or productName="V005" or productName="V006" or productName="V008" or productName="W008" or productName="W020" or productName="W021" or productName="W022" or productName="W023" or productName="W024" or productName="W026" or productName="W027" or productName="W028" or productName="W029" or productName="W105" or productName="W106" or productName="WI01" or productName="WI02" or productName="WI03" or productName="WI07" or productName="WI08" or productName="WI09" or productName="WI10" or productName="WI11" or productName="WI12" or productName="WI13" or productName="WI14" or productName="WI17" or productName="WI20" or productName="WI21" or productName="WI21_Health" or productName="WI23" or productName="WI24" or productName="WI26" or productName="WI30" or productName="WI31" or productName="WI33" or productName="WI34" or productName="X001" or productName="X002" or productName="X003" or productName="X004" or productName="X005" or productName="X008" or productName="Y001" or productName="Y007" or productName="Y009" or productName="Y010" or productName="Y011" or productName="Y011H" or productName="Y020" or productName="Y020N" or productName="Z008" or productName="ZI001")]')=1
INNER JOIN CENTER_CTR CTR ON CTR.ID_CTR=CTG.ID_CTR_CTG
INNER JOIN MODEL_MDL MDL ON MDL.ID_MDL=CTR.ID_MDL_CTR -
Too many tables with EXECUTE permision
Hi Gurus,
I found that my live databases has too many tables with EXECUTE permision. But I dont know how it happens: my query as follows:
select table_name
from dba_tab_privs
where owner='SYS' AND
privilege = 'EXECUTE' AND
grantee = 'PUBLIC'
result
TABLE_NAME
/598cc2d9_AWExceptionMessageRe
/24bd47b0_AWExceptionMessageRe
/b99e8561_AWExceptionMessageRe
/968869b8_AWExceptionMessageRe
/f8bf68b3_AWExceptionMessageRe
/9abd5a42_AWExceptionMessageRe
/5e83964b_AWExceptionMessageRe
/f01cb9e5_AWExceptionMessageRe
/380f765f_AWExpressCommandExce
/adef78c4_AWMemberExistsExcept
/5166f5c2_AWObjectExistsExcept
TABLE_NAME
oracle/AWXML/SparseDefinition
oracle/AWXML/ModelDimRef
/9d17934e_AWFunctionNotSupport
/d18d9de8_AWHandlerBaseTest
DBMS_AW_XML
INTERACTIONEXECUTE
CWM2_OLAP_INSTALLER
DBMS_XSOQ_ODBO
OLAPI_MDX_ROWSET_IMPL_T
OLAPI_MDX_ROWSET_TABLE
16444 rows selected.
==========================================================
Then I execute above query in other database. result was:
TABLE_NAME
STANDARD
UTL_HTTP
DBMS_PICKLER
DBMS_JAVA_TEST
UTL_FILE
UTL_RAW
UTL_TCP
UTL_INADDR
UTL_SMTP
DBMS_TRANSACTION
DBMS_SESSION
DBMS_DDL
DBMS_UTILITY
DBMS_SPACE
DBMS_ROWID
DBMS_PCLXUTIL
DBMS_APPLICATION_INFO
DBMS_OUTPUT
DBMS_DESCRIBE
DBMS_SQL
DBMS_EXPORT_EXTENSION
DBMS_JOB
DBMS_STATS
DBMS_ZHELP_IR
DBMS_PSP
DBMS_RULE
AQ$_AGENT
AQ$_DEQUEUE_HISTORY
AQ$_SUBSCRIBERS
AQ$_RECIPIENTS
AQ$_HISTORY
AQ$_NOTIFY_MSG
AQ$_DUMMY_T
DBMS_AQ_EXP_QUEUE_TABLES
DBMS_AQ_EXP_INDEX_TABLES
DBMS_AQ_EXP_TIMEMGR_TABLES
DBMS_AQ_EXP_HISTORY_TABLES
DBMS_AQ_EXP_SUBSCRIBER_TABLES
DBMS_AQ_EXP_QUEUES
DBMS_AQ_IMP_INTERNAL
DBMS_RMIN
DBMS_RESOURCE_MANAGER
DBMS_RESOURCE_MANAGER_PRIVS
DBMS_RMGR_PLAN_EXPORT
DBMS_RMGR_GROUP_EXPORT
DBMS_RMGR_PACT_EXPORT
LOW_GROUP
DEFAULT_CONSUMER_GROUP
DBMS_DEBUG_VC2COLL
DBMS_DEBUG
PBSDE
DBMS_SUMMARY
DBMS_SNAPSHOT
DBMS_REFRESH
DBMS_SNAPSHOT_UTL
DBMS_REFRESH_EXP_SITES
DBMS_REFRESH_EXP_LWM
DBMS_TRACE
DBMS_LOB
UTL_REF
UTL_COLL
ODCIPREDINFO
ODCIRIDLIST
ODCIINDEXCTX
ODCIARGDESCLIST
ODCIFUNCINFO
ODCISTATSOPTIONS
ODCICOLINFOLIST
ODCIOBJECT
ODCIOBJECTLIST
ODCIQUERYINFO
ODCICONST
SYSEVENT
DICTIONARY_OBJ_TYPE
DICTIONARY_OBJ_OWNER
DICTIONARY_OBJ_NAME
DATABASE_NAME
INSTANCE_NUM
LOGIN_USER
IS_SERVERERROR
SERVER_ERROR
DES_ENCRYPTED_PASSWORD
IS_ALTER_COLUMN
IS_DROP_COLUMN
GRANTEE
REVOKEE
PRIVILEGE_LIST
WITH_GRANT_OPTION
DICTIONARY_OBJ_OWNER_LIST
DICTIONARY_OBJ_NAME_LIST
IS_CREATING_NESTED_TABLE
CLIENT_IP_ADDRESS
DBMS_REPUTIL
DBMS_REPUTIL2
DBMS_OFFLINE_RGT
DBMS_REPCAT_RGT_EXP
DBMS_REPCAT_INSTANTIATE
DBMS_CRYPTO_TOOLKIT
DBMS_RANDOM
how come it happens? need help from u all !!!!!!!!!!you asked why you have such grant found in dba_tab_privs. Let's try to find DBMS_RANDOM (listed on your output) in $ORACLE_HOME/rdbms/admin:
cd $ORACLE_HOME/rdbms/admin
grep dbms_random *
dbmsrand.sql:CREATE OR REPLACE PACKAGE dbms_random AS
dbmsrand.sql: -- execute dbms_random.seed(12345678);
dbmsrand.sql: -- execute dbms_random.seed(TO_CHAR(SYSDATE,'MM-DD-YYYY HH24:MI:SS'));
dbmsrand.sql: -- my_random_number := dbms_random.random;
dbmsrand.sql: -- my_random_real := dbms_random.value;
dbmsrand.sql: -- select dbms_random.value from dual;
dbmsrand.sql: -- insert into a values (dbms_random.value);
dbmsrand.sql: -- execute :x := dbms_random.value;
dbmsrand.sql:END dbms_random;
dbmsrand.sql:CREATE OR REPLACE PACKAGE BODY dbms_random AS
dbmsrand.sql:END dbms_random;
dbmsrand.sql:CREATE OR REPLACE PUBLIC SYNONYM dbms_random FOR sys.dbms_random;
dbmsrand.sql:GRANT EXECUTE ON dbms_random TO public;
This is run by catproc.sql script which you run while creating database. -
i am having problem while using ms word with anjal is not working properly but its working in facebook and other areas.i need and its very important to using tamil fonts for my job.can anyone help me out from this problem.
thanking you
by
mosesThose who are knowledgable in this area (myself not among them) say that Word's support for Asian languages is faulty. The best word processor for that use is "Mellel."
-
Problems in using Windows Explorer with VPC Virtual PC?
Has anybody experienced problems in using Windows Explorer with VPC Virtual PC?
Lacking any "forbidden" or "appropriate usage" guidelines, I regularly use Windows Explorer (Windows 2000) to transfer file from the desktop. I have occasionally sensed that this might be wrong. Today I inadvertently clicked the MAC harddrive instead of the Desktop (within Windows Explorer) and caused all manner of mischief.
Any other views please?Let me correct this:
I regularly use Windows Explorer (Windows 2000) to transfer files from the "Mac" desktop
Any ideas please Virtual PC VPC users?
Maybe you are looking for
-
Today, Firefox crashed and told me to submit a report and restart. After I did so, it began to load, then crashed, and told me there was a problem. I closed it and restarted again, where the same problem happened again. I followed the steps on the tr
-
IPhoto 11 will not (won't) import photos
After upgrading to iPhoto 11 I cannot import photos using the usual methods. I have tried importing via ImageCapture app (my usual choice). When that did not work, I tried dragging the files from my camera media to iPhoto. When that did not work, I c
-
my internet connection keep dropping and the only way to re connection is by using disk utility to fix hard disc this is the problem it finds 2011-12-14 13:20:13 +0100: Disk Utility started. 2011-12-14 13:20:19 +0100: Verifying permissions for “Macin
-
Clamd fails after installing Security Update 2010-004
A few months ago while running clamav-0.96, I began to get "Assertion failed" notices in my system log. But I applied a PowerPC patch available at clamav.net and that solved the problem. Later on, I updated to clamav-0.96.1 and everything continued r
-
Send dashboard with email notification
Hi, Is it possible to send email notification along with dashboard in OEM 12c.Please assist me on this. thanks, sagar