Flash back, table: error - ORA-08189
Hi friends,I have a problem while doing the flashback table.
SQL > flashback table emp to the SNA 688268.
Flashback table emp to SNA 688268
*
ERROR on line 1:
ORA-08189: cannot flashback the table because the movement of the line is not enabled.
What should I do...?
First check if the table is in the system tablespace or not... If it is carrier movement line would not help...
Then, if it isn't then go
change the table emp enable row movement
Flashback table emp to SNA 688268;
Tags: Database
Similar Questions
-
Execute Immediate with DOF and TABLE() - error ORA-22905
Hello
I have a problem trying to use a user defined the Type of the Table in a statement Execute Immediate containing a CREATE TABLE statement.
Is there no work around for this problem?
The actual code for the SELECT * OF TABLE(:T) is dynamic and slow. That's why I try to avoid to create/fill the table in two steps (as does with MY_TABLE1). Also, in this case, I can't use SELECT * but must specify all the columns (amount variable and over 100 columns).
CREATE TYPE MY_TABLE_TYPE AS TABLE OF VARCHAR2(30); / DECLARE MT MY_TABLE_TYPE; BEGIN SELECT * BULK COLLECT INTO MT FROM DUAL; -- Two steps EXECUTE IMMEDIATE 'CREATE TABLE MY_TABLE1 (A VARCHAR2(30))'; EXECUTE IMMEDIATE 'INSERT INTO MY_TABLE1 SELECT * FROM TABLE(:T)' USING MT; -- OK -- One step EXECUTE IMMEDIATE 'CREATE TABLE MY_TABLE2 AS SELECT * FROM TABLE(:T)' USING MT; -- ERROR ORA-22905 END; /
byee
Andrea
In my view, the error message is incorrect or the less misleading. Bind variables cannot be used in DDL:
SQL > declare
2 number of v_var: = 99;
3. start
4 run immediately "' create the my_table2 in select table: double T" using v_var; "
5 end;
6.
declare
*
ERROR on line 1:
ORA-01027: bind variable not allowed for data definition operations
ORA-06512: at line 4 levelSQL >
What you could do is use the package variable:
SQL > CREATE OR REPLACE
2 PACKAGE PKG1
3 EAST
4 MT MY_TABLE_TYPE;
5 FUNCTION GET_MT
6 RETURN MY_TABLE_TYPE;
7 END;
8.Package created.
SQL > CREATE OR REPLACE
PACKAGE 2 BODY PKG1
3 EAST
4 GET_MT FUNCTION
5 RETURN MY_TABLE_TYPE
6 EAST
7. START
8 RETURN MT;
9 END;
10 END;
11.Package body created.
SQL > DROP TABLE MY_TABLE1 PURGE
2.Deleted table.
SQL > DROP TABLE MY_TABLE2 PURGE
2.
DROP TABLE MY_TABLE2 PURGE
*
ERROR on line 1:
ORA-00942: table or view does not existSQL > START
2. SELECT * BULK COLLECT INTO PKG1.MT FROM DUAL;
3 - two steps
4 RUN IMMEDIATELY "CREATE TABLE MY_TABLE1 (A VARCHAR2 (30))';"
5 IMMEDIATELY EXECUTE "INSERT INTO MY_TABLE1 SELECT * FROM TABLE (PKG1." GET_MT)';
6 - one step
7 IMMEDIATE EXECUTION "CREATE TABLE MY_TABLE2 AS SELECT * FROM TABLE (PKG1." GET_MT)';
8 END;
9.PL/SQL procedure successfully completed.
SQL > select * from my_table1;
A
------------------------------
XSQL > select * from my_table2;
COLUMN_VALUE
------------------------------
XSQL >
SY.
-
Link table error: ORA-01485: compile bind different length to execute
Hi all -
I'm running on a question where I receive the following error message when you try to use the binding table. I'm dynamically enumeration of a set of data and fill tables Oracle of the same name with all the data from the DataTable. I tried debugging with just a single datatable of 10 records with the double data type, however still receive the exception. For reference, the connection is already open before calling this method.
public void BulkLoadWithArrayBinding (System.Data.DataTable dt)
{
StringBuilder sb = new StringBuilder();
The list settings < OracleParameter > As new List < OracleParameter >(dt.) Columns.Count);
OracleCommand cmd = new OracleCommand();
cmd connection group conn.;
SB. Append ("INSERT INTO" + dt. TableName + "(' ');
foreach (DataColumn DC in dt. Columns)
{
SB. Append (dc. ColumnName.ToUpper ());
If (dc. Ordinal < dt. Columns.Count - 1).
SB. AppendLine(",");
}
SB. Append(") VALUES(");
foreach (DataColumn DC in dt. Columns)
{
string parameterName = dc. ColumnName.ToUpper ();
SB. Append (":" + parameterName);
If (DC. Ordinal < dt. Columns.Count - 1).
SB. AppendLine(",");
String [] sArray = new String [dt. Rows.Count];
Xavier of DateTime [] = new DateTime [dt. Rows.Count];
Decimal [] dbArray = new Decimal [dt. Rows.Count];
OracleParameter p = null;
If (dc. DataType.Name is "String")
{
for (int i = 0; i < dt.) Rows.Count; i ++)
{
[i] sArray is dt. Lines [i] [dc. Ordinal]. ToString();
}
p = new OracleParameter (parameterName,
OracleDbType.Varchar2, dt. Rows.Count, ParameterDirection.Input);
p.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
p.Size = sArray.Length;
p.Value = sArray;
}
ElseIf (dc. DataType.Name is "DateTime")
{
for (int i = 0; i < dt.) Rows.Count; i ++)
{
Xavier [i] = Convert.ToDateTime (dt. Lines [i] [dc. Ordinal]);
}
p = new OracleParameter (parameterName,
OracleDbType.Date, dt. Rows.Count, ParameterDirection.Input);
p.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
p.Size = dArray.Length;
p.Value = ASA;
}
on the other
If (dc. DataType.Name is 'Double')
{
for (int i = 0; i < dt.) Rows.Count; i ++)
{
dbArray [i] = Convert.ToDecimal (dt. Lines [i] [dc. Ordinal]);
}
/ * p = new OracleParameter (parameterName, OracleDbType.Decimal, dbArray.Length, ParameterDirection.Input); * /.
p = new OracleParameter();
p.ParameterName = parameterName;
p.OracleDbType = OracleDbType.Decimal;
p.Direction = ParameterDirection.Input;
p.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
p.Size = dbArray.Length;
p.Value = dbArray;
}
cmd. Parameters.Add (p);
parameters. Add (p);
}
SB. AppendLine ("") ");"
cmd.CommandText = sb. ToString();
cmd.CommandType = CommandType.Text;
cmd ArrayBindCount group dt. Rows.Count;
BindByName. cmd = true;
cmd ExecuteNonQuery());
}Hello
I don't actually run your code, but you should not be put in p.CollectionType = OracleCollectionType.PLSQLAssociativeArray; Associative arrays are differnet liaison of the table.
An associative array is the equivalent of a scalar array type that you would spend in a stored procedure to a single run.
Binding of the table is used to 'run this statement X times, here is the data for all X executions above all. "
Here is a small example, I hope this can help,
Greg//create table onedouble(col1 number); using System; using System.Data; using Oracle.DataAccess.Client; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { double[] doubs = new double[10]; for (int i=0;i<10;i++) doubs[i] = Double.Parse(i.ToString()+"."+i.ToString()); using (OracleConnection con = new OracleConnection("data source=orcl;user id=scott;password=tiger")) { con.Open(); using (OracleCommand cmd = new OracleCommand("", con)) { cmd.CommandText = "insert into onedouble values(:1)"; cmd.ArrayBindCount = 10; cmd.Parameters.Add(new OracleParameter("",OracleDbType.Double)); cmd.Parameters[0].Value = doubs; // this causes ora-1485 //cmd.Parameters[0].CollectionType = OracleCollectionType.PLSQLAssociativeArray; cmd.ExecuteNonQuery(); } } } } }
results
=======SQL > select * from onedouble;
COL1
----------
0
1.1
2.2
3.3
4.4
5.5
6.6
7.7
8.8
9.9 -
Table binding error ORA-01485 when I try to get in an associative array
Hello
I test to pass in an array associative odp.net
So I created a simple testpackage:
CREATE TABLE jwetesttab (CLIENTNR NUMBER (10) NOT NULL);
CREATE OR REPLACE PACKAGE IN THE JWETEST_PK
TYPE t_CLIENTNRS IS TABLE OF NUMBER INDEX OF PLS_INTEGER;
PROCEDURE TestArrayIn (p_CLIENTNRS IN t_CLIENTNRS, p_NbOfRowsInserted OUT NUMBER);
END JWETEST_PK;
/
CREATE OR REPLACE PACKAGE BODY JWETEST_PK AS
PROCEDURE TestArrayIn (p_CLIENTNRS IN t_CLIENTNRS, p_NbOfRowsInserted ON the NUMBER)
IS
BEGIN
FORALL i IN p_CLIENTNRS.first... p_CLIENTNRS. Last
INSERT INTO jwetesttab (CLIENTNR) VALUES (p_CLIENTNRS (i));
p_NbOfRowsInserted: = SQL % ROWCOUNT;
COMMIT;
END TestArrayIn;
end JWETEST_PK;
/
Then I did as simple testapp as follows:
Protected Int As Integer = 0
Dim arrNums() As Integer = {1, 2, 3}
Dim cmd As New OracleCommand
Dim cnn as new OracleConnection (s_conn)
Try
With cmd
. ArrayBindCount = 3
. Connection = cnn
. CommandText = "JWETEST_PK. TestArrayIn ".
. CommandType = CommandType.StoredProcedure
Var p_Clientnrs As OracleParameter = New OracleParameter
With p_Clientnrs
. ParameterName = "p_CLIENTNRS."
. DbType = DbType.Int32
. CollectionType = OracleCollectionType.PLSQLAssociativeArray
. Value = arrNums
. Size = 3
Ends with
. Parameters.Add (p_Clientnrs)
. Parameters.Add (New OracleParameter ("p_NbOfRowsInserted", OracleDbType.Int32, ParameterDirection.Output))
CNN. Open()
cmd ExecuteNonQuery()).
Int = CInt (.) Parameters ("p_NbOfRowsInserted"). Value)
Ends with
Catch ex As Exception
MsgBox (ex.) Message)
Finally
If (cnn IsNot Nothing) = False Then
CNN. Close()
CNN. Dispose()
End If
End Try
When I run my testapp, the lines are inseterd in the database, but it gives me an error: link table error: ORA-01485Liaison of the table and the associative arrays are two different functions and tend to confuse because they both have the word Array in them.
The table binding is for "run this procedure and statement number X times, all the data here is at the front. ''
Associative array is to "perform this procedure once, here is the table I want to that you pass in.Start by removing ArrayBindCount = 3and see if that helps
If you still have problems, see the example of associative array on your hard disk to %OH%\ODP.NET\samples\2.x\AssocArray
It will be useful,
Greg -
How to find tables partitioned, whose loading may fail with error ORA-14400
Hello
We have several partitioned tables. Sometimes when partitions are not created for this month, we get this error
ORA-14400 does map to any partition inserted partition key
May I know if there are any script or sql that I can use to discover arrays that may fail to load if DBA creates partitions in the next 2 weeks?
Thank you
Sarayu K.S.Of course, you can:
1. look in DBA_TAB_PARTITIONS by nom_partition if you are using a special naming convention, where owner =
and table_name = and nom_partition = 2. without entering the name of the partition, you could use dba_tab_partitions and instead check that there is a partition to your table with a high_value you plan to use. Know that the high_value is a long data type, then you will probably need to convert it into a varchar2.
3. before your big load, you can also insert a row into the table of destination with the new partition key that will be used and intercept errors with an exception handler. Roll it back if he succeeds.
4. a number of partitions may be created in advance to avoid the constant surveillance of the new partitions.
5 or you could also consider switching to interval partitioning if you're on 11 g and get out of the business of having to manually create partitions.
-
whenever I run this code I get this error
SQL Error: ORA-30926: failed to get a stable set of rows in the source tables
30926 00000 - "impossible to get a stable set of rows in the source tables.
* Cause: A stable set of rows could not be achieved due to the large dml
activity or one not deterministic where clause.
* Action: Remove any non deterministic of the clauses and reissue of the dml.
Don't know wht goes wrong!
SQL:
MERGE IN VENDORS_ACTIVE_DATE s
USING (nvl (d.VENDOR, s.VENDOR) selection of the SELLER,
NVL (d.COMPANY_CODE, s.COMPANY_CODE) COMPANY_CODE.
(case when ((d.VENDOR = s.VENDOR) and (d.COMPANY_CODE = s.COMPANY_CODE)))
)
then "MATCH".
When d.COMPANY_CODE is null
then 'DELETE '.
When s.COMPANY_CODE is null
then "INSERT."
else 'UPDATE '.
chck end)
from (select * from VENDORS_ACTIVE_DATE where COMPANY_CODE = 2) s
full outer join (select * provider where COMPANY_CODE = 2) d
on (d.COMPANY_CODE = s.COMPANY_CODE AND s.COMPANY_CODE = 2)
) d
WE (d.COMPANY_CODE = s.COMPANY_CODE AND d.chck in ('UPDATE', 'GAME', 'DELETE'))
WHEN MATCHED THEN
UPDATE SET s.VENDOR = d.VENDOR
WHERE d.chck in ('UPDATE', 'DELETE')
DELETE WHERE d.chck = 'DELETE '.
WHEN NOT MATCHED THEN
INSERT (SELLER, COMPANY_CODE)
VALUES (d.VENDOR, d.COMPANY_CODE)
Work request: (deleted the duplicate data in tables (source and target))
MERGE IN VENDORS_ACTIVE_DATE s
USING (nvl (d.VENDOR, s.VENDOR) selection of the SELLER,
NVL (d.ACTIVEDATE, s.ACTIVEDATE) ACTIVEDATE.
NVL (d.COMPANY_CODE, s.COMPANY_CODE) COMPANY_CODE.
(case when ((d.VENDOR = s.VENDOR))
- AND D.ACTIVEDATE = S.ACTIVEDATE
and NVL (d.ACTIVEDATE, trunc (sysdate)) = NVL (s.ACTIVEDATE, trunc (sysdate))
and (d.COMPANY_CODE = s.COMPANY_CODE)
)
then "MATCH".
When d.COMPANY_CODE is null
then 'DELETE '.
When s.COMPANY_CODE is null
then "INSERT."
else 'UPDATE '.
chck end)
from (select * from suppliers where COMPANY_CODE = 2) d
full outer join (select * from vendors_active_date where COMPANY_CODE = 2) s
on (d.COMPANY_CODE = s.COMPANY_CODE and s.vendor = d.vendor)
) d
WE (d.COMPANY_CODE = s.COMPANY_CODE AND d.VENDOR = s.VENDOR AND d.chck in ('UPDATE', 'GAME', 'DELETE'))
WHEN MATCHED THEN
S.ACTIVEDATE = UPDATE SET d.ACTIVEDATE
WHERE d.chck in ('UPDATE', 'DELETE')
DELETE WHERE d.chck = 'DELETE '.
WHEN NOT MATCHED THEN
INSERT (VENDOR, ACTIVEDATE, COMPANY_CODE)
VALUES (d.VENDOR, d.ACTIVEDATE, d.COMPANY_CODE)
-
ERROR "ora-01422" during insertion in the table?
Hello
I have created the dynamic action of PL/SQL to insert data but founded by page_item
declare x_found_pages number; x_auth_id number; x_user_id number; begin x_user_id := :P41_USR_ID; -- this is my page_item _____ successful run When change it to number value .. ! select count(V_APP_PAGES.PAGE_ID) into x_found_pages from V_AUTH_DTL V_AUTH_DTL,V_APP_PAGES V_APP_PAGES where V_AUTH_DTL.PAGE_ID!=V_APP_PAGES.PAGE_ID and V_AUTH_DTL.USR_ID = x_user_id; select T_AUTH.ID into x_auth_id from T_AUTH_DTL T_AUTH_DTL,T_AUTH T_AUTH where T_AUTH_DTL.AUTH_ID=T_AUTH.ID and T_AUTH.USR_ID = x_user_id; -- Checking...? if x_found_pages > 0 then for i in (select V_APP_PAGES.PAGE_ID from V_AUTH_DTL V_AUTH_DTL,V_APP_PAGES V_APP_PAGES where V_AUTH_DTL.PAGE_ID!=V_APP_PAGES.PAGE_ID and V_AUTH_DTL.USR_ID = x_user_id) loop insert into T_AUTH_DTL (AUTH_ID,PAGE_ID) values (x_auth_id,i.PAGE_ID); end loop; end if; end;
Please help me to avoid the ERROR "ora-01422" when running code in the dynamic action...
Thank you...
AMR Abdeen wrote:
I have created the dynamic action of PL/SQL to insert data but founded by page_item
- declare
- number of x_found_pages;
- number of x_auth_id;
- number of x_user_id;
- Start
- x_user_id: =: P41_USR_ID; -It is my page_item _ successfully performed when change to value the number...!
- SELECT count (V_APP_PAGES. Page_id) in x_found_pages
- of V_AUTH_DTL V_AUTH_DTL, V_APP_PAGES V_APP_PAGES
- where V_AUTH_DTL. PAGE_ID! = V_APP_PAGES. PAGE_ID
- and V_AUTH_DTL. USR_ID = x_user_id;
- Select T_AUTH.ID from x_auth_id
- of T_AUTH_DTL T_AUTH_DTL, T_AUTH T_AUTH
- where T_AUTH_DTL. AUTH_ID = T_AUTH.ID
- and T_AUTH. USR_ID = x_user_id;
- -Checking...?
- If x_found_pages > 0 then
- I'm in (select V_APP_PAGES. PAGE_ID
- of V_AUTH_DTL V_AUTH_DTL, V_APP_PAGES V_APP_PAGES
- where V_AUTH_DTL. PAGE_ID! = V_APP_PAGES. PAGE_ID
- and V_AUTH_DTL. USR_ID = x_user_id)
- loop
- insert into T_AUTH_DTL (AUTH_ID, PAGE_ID) values (x_auth_id, i.PAGE_ID);
- end loop;
- end if;
- end;
Please help me to avoid the ERROR "ora-01422" when running code in the dynamic action...
The error is explicit:
ORA-01422: exact fetch returns more than number of lines
Cause: The exact extraction specified number is less than the rows returned.
Action: Rewrite the query or change the number of rows requested
This would imply the query in line 16 as County dissociated in the previous one will always return only one row.
Run
select T_AUTH.ID into x_auth_id from T_AUTH_DTL T_AUTH_DTL,T_AUTH T_AUTH where T_AUTH_DTL.AUTH_ID=T_AUTH.ID and T_AUTH.USR_ID = :x_user_id
in the workshop of SQL by using the P41_USR_ID value in the variable link to find out how many rows it returns.
It is likely that the entire block can be replaced by a single INSERT statement. If you provide instructions CREATE TABLE, INSERT statements to create sample data and a clear definition of the requirements that we try to do.
What is the point of the inclusion of tables aliases that are exactly the same as the names of the tables?
-
Hi all
I am a newbie to Oracle and I am faced with the above error. Please see the below code snippets. Can someone please tell what I am doing wrong? Thank you in advance.
Thank you
CREATE TABLE ABC
(
ID VARCHAR2 ENABLE NUMBER NOT NULL,
FIELD1 ACTIVATE THE NUMBER NOT NULL,
FIELD2 ACTIVATE THE VARCHAR2 (8 BYTE) NOT NULL,
CONSTRAINT JOB_PK PRIMARY KEY (ID)
)
;
CREATE TABLE XYZ
(
ACTIVATE THE NUMBER 4 R_ID NOT NULL,.
ID VARCHAR2 ENABLE NUMBER NOT NULL,
Column1 NUMBER (2.0) default 0.00,.
Column2 NUMBER (2.0) default 0.00,.
COLUMN3 NUMBER (2.0).
NUMBER (2.0) TOTAL 0.00 default.
CONSTRAINT TRIP_PAYMENT_PK PRIMARY KEY (ID)
)
;
create or replace trigger trigger1
After Insert on XYZ
for each line
Declare
number of newTotal;
Start
newTOTAL: =: new. Column1 +: new. Column2 +: new. COLUMN3;
setting a day of XYZ together Total = newTotal;
end;
Insert into ABC (1, 45, ' Demo');
insertion in XYZ (1, 1, 12.50, 10.20 33,50, ");
Error report:
SQL error: ORA-04091: table XYZ is changing, function of triggering/can not see
Try one before line
create or replace trigger trigger1
before inserting on XYZ
for each line
Start
: new. TOTAL: =: new. Column1 +: new. Column2 +: new. COLUMN3;
end; -
Hi all
Here is the create table script, which does not work, error ORA-12899 keep expressing. Please suggest...,.,.
CREATE TABLE FX_TRANS
(
SAGE_TRADE_TYPE VARCHAR2 (50 BYTE),
UPSTREAM_EXECUTION_TS TIMESTAMP (9).
LOCAL_TZ VARCHAR2 (20 BYTE),
GMT_CONV_ENTERED_DT_TS TIMESTAMP (9) ALWAYS GENERATED IN THE FORM ("SONARDBO". "FN_CONVERT_TIMEZONE"("LOCAL_TZ","ENTERED_DT_TS")), "
GMT_CONV_EXECUTION_DT_TS TIMESTAMP (9) ALWAYS GENERATED IN THE FORM ("SONARDBO". "FN_CONVERT_TIMEZONE"("LOCAL_TZ","UPSTREAM_EXECUTION_TS")), "
);[Error] Running (5:3): ORA-12899: value too large for column 'GMT_CONV_EXECUTION_DT_TS' (actual: 11, maximum: 20)
[Error] Performance (6:3): ORA-12899: value too large for column 'GMT_CONV_EXECUTION_DT_TS' (actual: 11, maximum: 20)
Used fucntion Script that I use as a VIRTUAL column expression:CREATE OR REPLACE FUNCTION SONARDBO. FN_CONVERT_TIMEZONE
(
PI_LOCAL_TZ IN VARCHAR2,
PI_DT IN TIMESTAMP
)
RETURNS THE TIMESTAMP
DETERMINISTIC
IS
LV_TIMESTAMP TIMESTAMP;
BEGIN
LV_TIMESTAMP: = CASE WHEN PI_LOCAL_TZ = 'SERGEANT' THEN
TO_TIMESTAMP (TO_CHAR)
((FROM_TZ)
PI_DT,
"Asia/Singapore")
IN THE ZONE IS "GMT"),.
'YYYY-MM-DD HH. FF H '),'YYYY-MM-DD HH. TZDS FF PM ")"
WHEN PI_LOCAL_TZ = "GMT" THEN
TO_TIMESTAMP (TO_CHAR)
((FROM_TZ)
PI_DT,
"GMT")
IN THE ZONE IS "GMT"),.
'YYYY-MM-DD HH. FF H '),'YYYY-MM-DD HH. TZDS FF PM ")"
WHEN PI_LOCAL_TZ = "IS" THEN
TO_TIMESTAMP (TO_CHAR)
((FROM_TZ)
PI_DT,
"America/New_York")
IN THE ZONE IS "GMT"),.
'YYYY-MM-DD HH. FF H '),'YYYY-MM-DD HH. TZDS FF PM ")"
ANOTHER NULL
END;
RETURN LV_TIMESTAMP;
EXCEPTION
WHILE OTHERS THEN
LIFT;
END;
/Thank you very much
Arpit
This one worked for me.
-----------------
drop table FX_TRANS; CREATE TABLE FX_TRANS ( SAGE_TRADE_TYPE VARCHAR2 (50 BYTE), UPSTREAM_EXECUTION_TS TIMESTAMP (9), LOCAL_TZ VARCHAR2 (20 BYTE), ENTERED_DT_TS TIMESTAMP (9), GMT_CONV_ENTERED_DT_TS timestamp(9) GENERATED ALWAYS AS (cast ("FN_CONVERT_TIMEZONE" ("LOCAL_TZ", "ENTERED_DT_TS") as timestamp(9))), GMT_CONV_EXECUTION_DT_TS timestamp(9) GENERATED ALWAYS AS (cast("FN_CONVERT_TIMEZONE" ("LOCAL_TZ", "UPSTREAM_EXECUTION_TS") as timestamp(9)))); INSERT INTO fx_trans (SAGE_TRADE_TYPE, UPSTREAM_EXECUTION_TS, LOCAL_TZ, ENTERED_DT_TS) VALUES ('A', SYSTIMESTAMP, 'SGT', SYSTIMESTAMP + 1 / 24); commit;
------------
See you soon,.
Manik.
-
Hi all
your help is greatly appreciated...
Calling B.fucntion inside an A.fonctions to insert data into a table.
Here when you call the B.fucntion to insert data in the table... receiver AM a mistakeOmitted in B - SQL Error: ORA-14551: cannot perform a DML operation inside a query...
Can someone please help me to clarify this...
The FUNCTION A(varUPD_TYPE IN VARCHAR2) RETURN VARCHAR2 IS
varRETURN_VALUE VARCHAR2 (25): = NULL;numALLOWED_COUNT PROD. PROCESS_COUNTER. TYPE % ALLOWED_COUNT;
numLAST_COUNT_ADDED PROD. PROCESS_COUNTER. TYPE % LAST_COUNT_ADDED;
dtCHANGE_DATE DATE: = NULL;
varSTMT VARCHAR2 (2000);
bln_Allowed BOOLEAN;
myVar VARCHAR2 (32767).
BEGINIF varUPD_TYPE = "A" THEN
BEGIN
SELECT CH_DATE, LAST_COUNT_ADDED, ALLOWED_COUNT
IN dtCH_DATE, numLAST_COUNT_ADDED, numALLOWED_COUNT
PROD. PROCESS_COUNTER
WHERE NOM_PROCESSUS = "DAILY".
AND COUNTER_IND = A 'IF dtCH_DATE < = trunc (sysdate) THEN
numLAST_COUNT_ADDED: = 0;
END IF;EXCEPTION
WHILE OTHERS THEN
numLAST_COUNT_ADDED: = 0;
numALLOWED_COUNT: = 1;
END;
IF numALLOWED_COUNT > = numLAST_COUNT_ADDED + 1 THEN
bln_Allowed: = True;
varSTMT: = "UPDATE PROD. TMS_PROCESS_COUNTER ';
varSTMT: = varSTMT | ' SET last_count_added = ' | (numLAST_COUNT_ADDED + 1);
varSTMT: = varSTMT | "WHERE nom_processus =" DAILY "';
varSTMT: = varSTMT | "AND COUNTER_IND ="D"';
IF varSTMT IS NOT NULL
THEN
MyVar: = B(96,varSTMT);
PROC_LOG (' CALL B ': myVar);
IF myvar > 0 THEN
NULL;
END IF;
END IF;
On the other
End if;END IF;
EXCEPTION WHEN OTHERS THEN
PROC_LOG ("A failed '");
PROC_LOG (' SQL error: ' |) SUBSTR (SQLERRM, 1, 1000));
RETURNS A NULL VALUE.
PUT AN END TO;The FUNCTION B(numTABLE_ID IN NUMBER, varSQL_STATEMENT IN VARCHAR2) RETURNS NUMBER IS
varINSERT_BATCH_STMT VARCHAR2 (32767): = NULL;
varADD_REC_TYPE BATCH_TABLES. TYPE % ADD_REC_TYPE;BEGIN
INSERT INTO BATCH_STATEMENT (ID, TABLE_ID, STATEMENT, QUEUE_SEQUENCE_ID)
VALUES (Numidian, numTABLE_ID, varSQL_STATEMENT, 1);EXCEPTION WHEN OTHERS THEN
PROC_LOG ('B failed');
PROC_LOG (' SQL error: ' |) SUBSTR (SQLERRM, 1, 1000));
RETURNS - 1;
END B;
Structure of the Batch_statement table:
ID Number (15) not null
number (2) not null table_id
Statement varchar2 (4000) not null
Queue_sequence_id number (5) not nullWhy do you do such coding mess full of bad practices.
Remove the exceptions WHEN OTHERS, you're a turing a mistake in this way, they are bugs and (never) use functions to perform DML.
Functions are not intended for DML. Period.
-
DBMS_SQL in another schema of table-error of request * ORA-00942
Oracle experts,
I think that I have problems with the help of DBMS_SQL in which the function was created in a schema and the query table was created in a different schema.
We have 2 schemas: S1, S2
We have 2 tables:
T1 in the S1 schema
T2 in the schema S2
We have a function F1 created by DBA in the S1 schema that uses the dbms_sql as:
CREATE or REPLACE FUNCTION S1. F1 (v1 in VARCHAR2) return NUMBER IS
Cursor1 INTEGER;
BEGIN
Cursor1: = dbms_sql.open_cursor;
DBMS_SQL. Parse (cursor1, v1, dbms_sql. NATIVE);
DBMS_SQL.close_cursor (Cursor1);
Return (0);
EXCEPTION
while others then
DBMS_SQL.close_cursor (Cursor1);
return (1);
END;
/
I use jdeveloper 11G. We have a DB Oracle 11 g.
We have a java program that uses jdbc to talk to our Oracle database.
Basically, in my program java, I call F1 function to check if the query is valid.
If this is the case, it returns 0. Otherwise, returns the value 1:
oracle.jdbc.OracleCallableStatement cstmt = connection.prepareCall (oracle.jdbc.OracleCallableStatement) ("start?: = S1.") F1 (?); end; ») ;
cstmt.registerOutParameter (1, java.sql.Types.INTEGER);
cstmt.setString (2, "Select * from S2.") T2');
cstmt. Execute ();
Since the table that I run the query T2, created in different pattern of F1 has been created, I got the error:
* ORA-00942: table or view does not exist
So my questions are the following:
-J' use DB Oracle 11g, if I run the query on a table that was created in a different pattern than the function (which uses dbms_sql) appeared, I would get the error ORA-00942?
-If I run the query on the T1 table in the same schema as the function F1, if I have the same problem (the reason why I ask is that I can't create any table in the S1 schema because the DBA can do; I'm not a DBA)
-This isn't a problem, but a feature of security due to SQL injection?
-How to solve this problem, other than creating the table in the same schema as the function that uses DBMS_SQL?
Kind regards
BinhCopyright (default) stored objects managed by virtue field of safety of the owner of the and ignore privileges based on roles. So whatever that the user logged as function of S1. F1 always runs as a user S1 and ignores the S1 user roles. That's why exeuting instruction in S1. F1:
Select * from S2. T2
requires that the S1 user have the right to SELECT on S2. T2 granted to S1 directly, without going through the role.
SY.
-
error ORA-00942 table or view does not gv$ session s, v$ sql
Hello
I used it after request for package gives error ORA-00942 table or view does not exist but I run same query in sql plsql developer command run successfully.
SELECT sid, serial #.
in V_SID, V_SERIAL
GV $ session s, v$ sql v
WHERE username = "USER1".
and s.SQL_ID = v.SQL_ID
Kind regards
Vaibhavgrant select on gv_$session to
; grant select on v_$sql to ; Note If you are using GV$ SESSION then you must also use GV$ SQL and join with INST_ID column select.
-
Oracle on the SQL Server tables dblinked query error ORA-00904
Hello
I created a dblink to a SQL from Oracle database using generic connectivity.
The following query returns the error ORA-00904 invalid identifier in the (tblEmp.Empno) WHERE clause
SELECT 'EmpNo', "EmpName", "DeptName".
OF tblEmp@sqlserver.
tblDept@sqlserver
WHERE tblDept.DeptNo = tblEmp.Empno
I had to include the column names between double quotes because of the case review of the columns, but I can't do the
same thing for the WHERE clause.
(1) so how can I fix this error?
(2) also how can I include the Deptno column with the table alias in the columns list?
(Deptno is ambiguous in the Emp and Dept tables)
Kind regards
SamLooks like you have case-sensitive column names, try this
SELECT "EmpNo","EmpName", "DeptName" FROM tblEmp@sqlserver e, tblDept@sqlserver d WHERE d."DeptNo" = e."Empno" --<--- are you sure this is the correct join condition
What should we not
WHERE d."DeptNo" = e."DeptNo"
Published by: Alex Nuijten on September 22, 2009 13:28
-
receive error ORA-26786 logical standby
Dear all,
In the logic of the day before, I get error ORA-26786: a line with key chain exists, but contradictory or columns string in string table during the replication process during UPDATE or DELETE statements since the last few days.
Here is the status of Data Guard standby. Database was created ONE year back and since then never received this error, but the last days this don't mistake some of the paintings.
Operating system: Solaris 10 SPARC(64-bit)
DB version: 11.2.0.3
Thank you and best regards,
Mukesh
There may be logical pending changes that imputation is in conflict. Either you can resolve the conflict and run run error or remove the error, if you find it's ok. But if it is so common to find the root of the problem and difficulty cause.
-
Hi all
I started playing with OEMM and I get the following error when I try to 'Trace Data Impact' in an Oracle table. Here's what I do:
- I created a template and collected a few schemas/tables:
- Now when I try to "Trace Data Impact' on the table AP_DEF_STG, I get the following:
I already tried to create a "Configuration" for her, I tried to text instead of graphics, but the error is the same. If I go to a view of Oracle and do a "track Data Lineage", I get the same error again.
That someone was already been in this situation? This is the full error trace:
({"error": true, "errorMessage": "SQL error during the tracing of lineage: ORA-22813: value of the operand exceeds the limits of the system"})
', 'errorType': 'Line error', 'errorCodes': "[LNGTRC_E0016]".
","stackTrace":"Error Codes - [LNGTRC_E0016].
Request - VizModelLineage
Settings - showInternalObject [false] showNoType [true] showControlLinks [false] startingIds [17 #4723 #0] isBizUI [false] ObjectID [17 #1 #0] showSummaryView [true] collapseLevel [features] resetCache [fake] profile [] showMappingsAsNodes [true] skipCache [false] tracingDirection [3] tracingType [DataLineage] [ReportTree2202015-104855025] originalStartingObject cacheId [17 #4723 #0] viewType actionType [loadlineage] of viewId [ReportTree2202015-104855025] [ModelLineage]
MITI.web.common.exceptions.LineageUIException: SQL for tracing line error: ORA-22813: value of the operand exceeds the limits of the system
at MITI.web.common.service.facades.LineageFacadeImpl.getLineageGraph (LineageFacadeImpl.java:284)
at MITI.flash.tabs.VizModelLineage.getLineageTree (VizModelLineage.java:429)
at MITI.flash.tabs.VizModelLineage.buildLineageGraph (VizModelLineage.java:356)
at MITI.flash.tabs.VizModelLineage.performAction (VizModelLineage.java:148)
at MITI.server.servlets.FlashServlet.doPost (FlashServlet.java:156)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
to org.apache.coyote.AbstractProtocol$ AbstractConnectionHandler.process (AbstractProtocol.java:611)
to org.apache.tomcat.util.net.JIoEndpoint$ SocketProcessor.run (JIoEndpoint.java:316)
to java.util.concurrent.ThreadPoolExecutor$ Worker.runTask (ThreadPoolExecutor.java:895)
to java.util.concurrent.ThreadPoolExecutor$ Worker.run (ThreadPoolExecutor.java:918)
to org.apache.tomcat.util.threads.TaskThread$ WrappingRunnable.run (TaskThread.java:61)
at java.lang.Thread.run(Thread.java:662)
Caused by: MITI.server.services.lineage.LineageException: (LNGTRC_E0016) SQL error during the tracing of lineage: ORA-22813: value of the operand exceeds the limits of the system
at MITI.server.services.lineage.database.LineageDataSource.handle (LineageDataSource.java:41)
at MITI.util.database.CommonDataSource.handleSQLException (CommonDataSource.java:124)
at MITI.util.database.CommonDataSource.executeTransaction (CommonDataSource.java:83)
at MITI.util.database.CommonDataSource.executeStatement (CommonDataSource.java:54)
at MITI.server.services.lineage.impl.LineageImpl.traceLineage (LineageImpl.java:554)
at MITI.server.services.lineage.common.LineageTracer.traceLineage (LineageTracer.java:1078)
at MITI.server.services.lineage.common.LineageTracer.traceDataLineage (LineageTracer.java:313)
at MITI.server.services.lineage.common.LineageTracer.traceTechnicalData (LineageTracer.java:176)
at MITI.web.common.service.facades.LineageFacadeImpl.getLineageGraph (LineageFacadeImpl.java:245)
... 21 more
Caused by: java.sql.SQLException: ORA-22813: value of the operand exceeds the limits of the system
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:206)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1035)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:791)
at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:866)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1188)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3386)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3487)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1374)
at MITI.util.database.Query.executeStatement (Query.java:45)
at MITI.util.database.Statement.execute (Statement.java:66)
to MITI.util.database.CommonDataSource$ 1.run(CommonDataSource.java:50)
to MITI.util.database.CommonDataSource$ 1.run(CommonDataSource.java:47)
at MITI.util.database.Transaction.execute (Transaction.java:92)
at MITI.util.database.CommonDataSource.executeTransaction (CommonDataSource.java:80)
... more than 27
Caused by:
MITI.server.services.lineage.LineageException: (LNGTRC_E0016) SQL error during the tracing of lineage: ORA-22813: value of the operand exceeds the limits of the system
at MITI.server.services.lineage.database.LineageDataSource.handle (LineageDataSource.java:41)
at MITI.util.database.CommonDataSource.handleSQLException (CommonDataSource.java:124)
at MITI.util.database.CommonDataSource.executeTransaction (CommonDataSource.java:83)
at MITI.util.database.CommonDataSource.executeStatement (CommonDataSource.java:54)
at MITI.server.services.lineage.impl.LineageImpl.traceLineage (LineageImpl.java:554)
at MITI.server.services.lineage.common.LineageTracer.traceLineage (LineageTracer.java:1078)
at MITI.server.services.lineage.common.LineageTracer.traceDataLineage (LineageTracer.java:313)
at MITI.server.services.lineage.common.LineageTracer.traceTechnicalData (LineageTracer.java:176)
at MITI.web.common.service.facades.LineageFacadeImpl.getLineageGraph (LineageFacadeImpl.java:245)
at MITI.flash.tabs.VizModelLineage.getLineageTree (VizModelLineage.java:429)
at MITI.flash.tabs.VizModelLineage.buildLineageGraph (VizModelLineage.java:356)
at MITI.flash.tabs.VizModelLineage.performAction (VizModelLineage.java:148)
at MITI.server.servlets.FlashServlet.doPost (FlashServlet.java:156)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
to org.apache.coyote.AbstractProtocol$ AbstractConnectionHandler.process (AbstractProtocol.java:611)
to org.apache.tomcat.util.net.JIoEndpoint$ SocketProcessor.run (JIoEndpoint.java:316)
to java.util.concurrent.ThreadPoolExecutor$ Worker.runTask (ThreadPoolExecutor.java:895)
to java.util.concurrent.ThreadPoolExecutor$ Worker.run (ThreadPoolExecutor.java:918)
to org.apache.tomcat.util.threads.TaskThread$ WrappingRunnable.run (TaskThread.java:61)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.sql.SQLException: ORA-22813: value of the operand exceeds the limits of the system
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:206)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1035)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:791)
at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:866)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1188)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3386)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3487)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1374)
at MITI.util.database.Query.executeStatement (Query.java:45)
at MITI.util.database.Statement.execute (Statement.java:66)
to MITI.util.database.CommonDataSource$ 1.run(CommonDataSource.java:50)
to MITI.util.database.CommonDataSource$ 1.run(CommonDataSource.java:47)
at MITI.util.database.Transaction.execute (Transaction.java:92)
at MITI.util.database.CommonDataSource.executeTransaction (CommonDataSource.java:80)
... more than 27
Caused by:
java.sql.SQLException: ORA-22813: value of the operand exceeds the limits of the system
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:206)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1035)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:791)
at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:866)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1188)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3386)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3487)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1374)
at MITI.util.database.Query.executeStatement (Query.java:45)
at MITI.util.database.Statement.execute (Statement.java:66)
to MITI.util.database.CommonDataSource$ 1.run(CommonDataSource.java:50)
to MITI.util.database.CommonDataSource$ 1.run(CommonDataSource.java:47)
at MITI.util.database.Transaction.execute (Transaction.java:92)
at MITI.util.database.CommonDataSource.executeTransaction (CommonDataSource.java:80)
at MITI.util.database.CommonDataSource.executeStatement (CommonDataSource.java:54)
at MITI.server.services.lineage.impl.LineageImpl.traceLineage (LineageImpl.java:554)
at MITI.server.services.lineage.common.LineageTracer.traceLineage (LineageTracer.java:1078)
at MITI.server.services.lineage.common.LineageTracer.traceDataLineage (LineageTracer.java:313)
at MITI.server.services.lineage.common.LineageTracer.traceTechnicalData (LineageTracer.java:176)
at MITI.web.common.service.facades.LineageFacadeImpl.getLineageGraph (LineageFacadeImpl.java:245)
at MITI.flash.tabs.VizModelLineage.getLineageTree (VizModelLineage.java:429)
at MITI.flash.tabs.VizModelLineage.buildLineageGraph (VizModelLineage.java:356)
at MITI.flash.tabs.VizModelLineage.performAction (VizModelLineage.java:148)
at MITI.server.servlets.FlashServlet.doPost (FlashServlet.java:156)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
Oracle has published OEMM 12.2.1 and this error is gone! So if you are facing this problem in an older version, just go to the newest one.
Maybe you are looking for
-
Some Web sites appear with the photo home page and some do not.
-
Original title: Windows Ypdate default data locations have changed. By MS Fix - it = need to change the locations of update of widows to the default settings of Windows. How do I do that? All the Windows security updates fail since late May. Used MS
-
Battery drains very quickly despite the non use of bike G
Hi, I am facing problem of battery drain in my motorcycle G. Even after recharged as it gets start very fast drainage even after 5-6 minutes it gets drained at 97 percent, despite the no use of motorcycle G.And also I don't keep applications running
-
Can't detect the wireless, gateway 4025gz. mod, turn on wireless, Dosnt show the icon in the login screen. OK before wipjng drive.
-
HP Foilo 13: Windows 8 with HP Support Assistant
Hello When will there be a support assistant HP compatible software that will work with win8/folio 13? I tried most of the tricks to get support to work such as a reboot after installation, but the software always seem to hang again. It will have alw