dynamic SQL - column not allowed
Hi, I had a problem about the dynamic SQL. could someone help me? Thank you.TableName: = Init;
ID: = 1;
Statement: = "insert" | TableName. "values (' |)" ID | ', mdsys.sdo_geometry (3007, null, null,)
MDSYS.sdo_elem_info_array (1,1003,1,
13,1003,1,
25,1003,1,
37,1003,1,
49,1003,1,
61,1003,1,
73,1003,1,
85,1003,1,
97,1003,1,
109,1003,1,
121,1003,1,
133,1003,1,
145,1003,1,
157,1003,1,
169,1003,1,
181,1003,1,
193,1003,1,
205,1003,1,
217,1003,1,
229,1003,1,
((241,1003,1), anoCone))';
EXECUTE IMMEDIATE statement.
error: column not allowed
But if I use static SQL (i.e. INSERT INTO Init...), it not there no problem at all.
Well, I still have no idea why you are wanting to use dynamic SQL statements for this (it will only add a memory load, especially if your routine is frequently called) but I have at least understood your problem.
The first anonymous block shows using the static SQL, the second shows how to use dynamic (and you reference a declared local variable, where your problem is).
SQL> select count(*) from object1;
COUNT(*)
------------------
0
Elapsed: 00:00:00.01
SQL> declare
anoCone MDSYS.SDO_ORDINATE_ARRAY;
begin
insert into OBJECT1
values
(
1,
mdsys.sdo_geometry(3007, null, null,
mdsys.sdo_elem_info_array (1,1003,1,
13,1003,1,
25,1003,1,
37,1003,1,
49,1003,1,
61,1003,1,
73,1003,1,
85,1003,1,
97,1003,1,
109,1003,1,
121,1003,1,
133,1003,1,
145,1003,1,
157,1003,1,
169,1003,1,
181,1003,1,
193,1003,1,
205,1003,1,
217,1003,1,
229,1003,1,
241,1003,1),
anoCone));
end;
/
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
SQL> SQL>
SQL> select count(*) from object1;
COUNT(*)
------------------
1
Elapsed: 00:00:00.01
SQL> roll
Rollback complete.
SQL> select count(*) from object1;
COUNT(*)
------------------
0
Elapsed: 00:00:00.01
SQL> declare
anoCone MDSYS.SDO_ORDINATE_ARRAY;
begin
execute immediate 'insert into ' || 'OBJECT1' || '
values
(
1,
mdsys.sdo_geometry(3007, null, null,
mdsys.sdo_elem_info_array (1,1003,1,
13,1003,1,
25,1003,1,
37,1003,1,
49,1003,1,
61,1003,1,
73,1003,1,
85,1003,1,
97,1003,1,
109,1003,1,
121,1003,1,
133,1003,1,
145,1003,1,
157,1003,1,
169,1003,1,
181,1003,1,
193,1003,1,
205,1003,1,
217,1003,1,
229,1003,1,
241,1003,1),
:anoCone)) ' using anoCone;
end;
/
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.01
SQL>
select count(*) from object1;SQL>
COUNT(*)
------------------
1
Elapsed: 00:00:00.01
SQL>
Tags: Database
Similar Questions
-
Database trigger - PL/SQL: ORA-00984: column not allowed here
I am trying to create a trigger that will update a table of audit used when a row is changed. Using a sequence number to assign an identifier unique to each line as it is created. Need to capture the user ID, date modified and action (update), the image of the front line.
CREATE SEQUENCE emp_audit_seq START WITH 10;
Create table emp ( empno NUMBER(4) Primary Key, ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(2));
CREATE TABLE emp_audit ( audit_uid NUMBER(15) Primary Key, change_date DATE, change_user VARCHAR2(30), action CHAR(1), empno NUMBER(4), ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(2));
Can someone help to help me find what I'm doing wrong with the trigger?CREATE OR REPLACE TRIGGER trig_emp_audit BEFORE UPDATE ON emp FOR EACH ROW BEGIN INSERT INTO emp_audit VALUES(emp_audit_seq.nextval, change_date, change_user, action, :old.empno, :old.ename, :old.job, :old.mgr, :old.hiredate, :old.sal, :old.comm, deptno); END; / Warning: Trigger created with compilation errors. SQL> show errors Errors for TRIGGER TRIG_EMP_AUDIT: LINE/COL ERROR -------- ----------------------------------------------- 2/3 PL/SQL: SQL Statement ignored 3/149 PL/SQL: ORA-00984: column not allowed here
Published by: LostNoob on August 25, 2012 14:24First of all, when you write an INSERT statement, it is always good for the columns that you insert in the list. Which makes the code easier to follow - you do not have separately pull toward the top of the table definition to know what order of columns is inserted. And it makes the code easier to manage because the declaration become invalid if you add a new column to the table in the future.
Second, CHANGE_DATE, CHANGE_USER and ACTION are not (probably) functions and are not local variables so it is not supposed to use them in an INSERT statement. You need to write code or to take advantage of the existing functions to fill in these columns. I suppose, for example, that you want to use SYSDATE to fill the CHANGE_DATE and the USER to fill the column CHANGE_USER. My guess is that ACTION must always be a 'U' for UPDATE.
Thirdly, it seems that you left the: old man on the DEPTNO column.
Put them all together, you would have something like
CREATE OR REPLACE TRIGGER trig_emp_audit BEFORE UPDATE ON emp FOR EACH ROW BEGIN INSERT INTO emp_audit( audit_uid, change_date, change_user, action, enpno, ename, job, mgr, hiredate, sal, comm, deptno ) VALUES( emp_audit_seq.nextval, sysdate, user, 'U', :old.empno, :old.ename, :old.job, :old.mgr, :old.hiredate, :old.sal, :old.comm, :old.deptno); END; /
Justin
-
PL/SQL: ORA-00984: column not allowed here
Sorry, it's probably easy and I forgot something simple, but it's driving me crazy :-)
Error: PL/SQL: ORA-00984: column not allowed here on g_deduction_amountVARIABLE g_fk_deduction VARCHAR2(30) VARIABLE g_fk_empno NUMBER VARIABLE g_before_or_after_flag CHAR(1) VARIABLE g_deduction_amount NUMBER BEGIN :g_fk_deduction := '401K'; :g_fk_empno := 7369; :g_before_or_after_flag := 'B'; :g_deduction_amount := 150.00; END; / BEGIN INSERT INTO emp_deductions (fk_deduction, fk_empno, before_or_after_flag, deduction_amount) VALUES (g_fk_deduction, g_fk_empno, g_before_or_after_flag, g_deduction_amount); COMMIT; END; /
in the value clause.
Any help would be appreciated.
Table is below:
Published by: LostNoob on August 23, 2012 19:06CREATE TABLE emp_deductions ( fk_deduction VARCHAR2(30), fk_empno NUMBER(4), before_or_after_flag CHAR(1), deduction_amount NUMBER(6,2));
rp0428 wrote:
>
: g_fk_deduction: = "401k".
: g_fk_empno: = 7369;
: g_before_or_after_flag: = 'B ';.
: g_deduction_amount: = 150.00;
>
Why did you put a colon here? Get rid of them.They are necessary, since they are declared SQL * more variable.
The problem for the OP, is that in the clause values in the insert the colon are missing.
Published by: Mark Williams on August 23, 2012 22:31
Here is your example requested:
SQL> create table test (c number); Table created. SQL> variable v_c number SQL> begin 2 :v_c := 46; 3 end; 4 / PL/SQL procedure successfully completed. SQL> begin 2 insert into test values (:v_c); 3 end; 4 / PL/SQL procedure successfully completed. SQL> commit; Commit complete. SQL> select * from test; C ---------- 46 1 row selected. SQL>
-
ORA-00984: column not allowed here, when you try to use a default UDF
I am wanting to create a table that has a default value of a user-defined function, and because this default is intended to be used in a few different places so I would use a function rather than in the table definition.
This is my current code that works very well:
but I would get something similar to this work:CREATE TABLE DEPT_HIST ( DEPTNO NUMBER(2) not null, DNAME VARCHAR2(14), LOC VARCHAR2(13), SQL_ACTV_C CHAR(1) not null, EFFT_STRT_S TIMESTAMP(6) default SYSTIMESTAMP not null, EFFT_END_S TIMESTAMP(6) default TO_TIMESTAMP('9999/12/30 00:00:00.000000', 'YYYY/MM/DD:HH24:MI:SS.FF6') not null, DELT_F CHAR(1) default 'N' not null );
but I get an error of:CREATE OR REPLACE FUNCTION EOT RETURN timestamp IS Result timestamp; BEGIN RETURN (TO_TIMESTAMP ('9999/12/30 00:00:00.000000', 'YYYY/MM/DD:HH24:MI:SS.FF6')); END EOT; / select eot from dual; EOT --------------------------------------------------------------------------- 30/DEC/99 12:00:00.000000000 AM CREATE TABLE DEPT_HIST ( DEPTNO NUMBER(2) not null, DNAME VARCHAR2(14), LOC VARCHAR2(13), SQL_ACTV_C CHAR(1) not null, EFFT_STRT_S TIMESTAMP(6) default SYSTIMESTAMP not null, EFFT_END_S TIMESTAMP(6) default EOT not null, DELT_F CHAR(1) default 'N' not null );
Any ideas? I guess I could use a trigger but not exactly what I'm after.EFFT_END_S TIMESTAMP(6) default EOT not null, * ERROR at line 8: ORA-00984: column not allowed here
Hello
Sorry; No function defined by the user in the DEFAULT clause.
From SQL, under "CREATE TABLE Statement" language manual
http://download.Oracle.com/docs/CD/B28359_01/server.111/b28286/statements_7002.htm#sthref7119Restriction on default column values
A DEFAULT expression cannot contain references to the functions PL/SQL or other columns, the nickname CURRVAL, NEXTVAL, LEVEL, PRIOR and ROWNUM, or date constants that are not completely specified.I wouldn't use a trip just for that. If you need a trigger for other reasons, then maybe you can include the definition of this column in the trigger, too, but, in general, avoid triggers when there is an alternative.
-
Procedure returns ORA-00984: column not allowed here
Get an error returned by my procedure and can't understand it. Someone has an idea?
Thanks in advance,
Carpet
14/2 PL/SQL: statement ignored
15/80 PL/SQL: ORA-00984: column not allowed here
CREATE OR REPLACE PROCEDURE basket_add_sp
(p_idproduct in NUMBER,
p_price in NUMBERS
p_quantity in NUMBERS
p_idbasket in NUMBERS
p_option1 in NUMBERS
p_option in NUMBERS)
IS
lv_seq_num bb_basketitem.idbasketitem%TYPE;
BEGIN
SELECT bb_idbasketitem_seq. NEXTVAL
IN lv_seq_num
FROM DUAL;
INSERT INTO bb_basketitem (idbasketitem, idproduct, price, quantity, idbasket, option 1, option 2)
VALUES (lv_seq_num, p_idproduct, p_price, p_quantity, p_idbasket, p_option1, p_option2);
COMMIT;
END;
/What is p_option2 in the INSERT statement? In the settings, you have only p_option1 and p_option.
I agree with Walter, you can save an e/s by losing the select double.
-
ORA-01733-virtual column not allowed here - insert using inline view
Does anyone know why I get ORA-01733-virtual column not allowed here
SQL > select * from v version $;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
PL/SQL release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
AMT for 32-bit Windows: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production
-no error without the WITH CHECK option
SQL > INSERT INTO
2 (SELECT
3 location_id,
4 city
5 l.country_id
6 OF country c, localities, regions r l
7 where l.country_id = c.country_id
8 and c.region_id = r.region_id
9 and r.region_name = 'Asia')
10 VALUES (5500, 'Common Wansdworth', 'UK');
1 line of creation.
SQL > rollback;
Complete restoration.
-error with WITH CHECK OPTION
SQL > INSERT INTO
2 (SELECT
3 location_id,
4 city
5 l.country_id
6 OF country c, localities, regions r l
7 where l.country_id = c.country_id
8 and c.region_id = r.region_id
9 and r.region_name = 'Asia' WITH CHECK OPTION)
10 VALUES (5500, 'Common Wansdworth', 'UK');
INSERT INTO
*
ERROR on line 1:
ORA-01733: virtual column not allowed here
I was expecting
ORA-01402: discovers the violation of where WITH CHECK OPTION clause
for the second. Am I missing here?Coskan wrote:
RandolfThanks a lot for the update of this old question
After reading the link, I think I should ignore this error and accept him as ORA-01402The information that you have asked me to check me do not have an understanding of the different error types.
Coskan,
I didn't know this is an old thread that somehow got updated by someone else.
Regarding your question: you're right that the output of the script is not really that useful.
I have just run on 10.2.0.4 and in general, it seems that the output of USER_UPDATABLE_COLUMNS is incorrect regarding the views of join using the WITH CHECK OPTION.
For example although the location_id from the TEST_V_2 column appears as non-editable (probably because of the rule that "the columns used in the join expression" cannot be modified in a join view when you use the WITH CHECK OPTION) I can run successfully your insert if statement I choose a location_id less than 2000.
It seems that summed up the difference if you join more than two tables, you'll always get the error "ORA-01733" when you try to insert in the join with the enabled OPTION CHECK view. For example to add a third table TEST_V_2 which does not change the original view, but simply joined meaning for example COUNTRIES to LOCATIONS, will show the same behavior to throw an ORA-01733, however it works fine when the omission of the WITH CHECK OPTION.
So overall, I tend to say it is really a limitation of the implementation and it is not actually an ORA-01402 but looks like Oracle is simply trying to tell you: Amendment No. INSERT in this possible view. Updates however seem to work, at least I can find some examples of work.
There seems to be other restrictions of implementation with the WITH CHECK OPTION in place even when the only membership as two tables, for example when trying to join the COUNTRIES and PLACES but by selecting only in PLACES and by using a filter on the COUNTRY_ID predicate fails with ORA-01733 when this predicate is applied to the COUNTRY. COUNTRY_ID but it works if this predicate is applied to PLACES. COUNTRY_ID.
I could imagine that Oracle has quietly added some of these restrictions with each patch set due to the angle of the case/adverse reactions encountered. I saw this for other features, too.
Kind regards
RandolfOracle related blog stuff:
http://Oracle-Randolf.blogspot.com/SQLTools ++ for Oracle (Open source Oracle GUI for Windows):
http://www.sqltools-plusplus.org:7676 /.
http://sourceforge.NET/projects/SQLT-pp/ -
ORA-00984: column not allowed here
Hi all
Kindly someone please shed some light on this called error "ORA-00984: column not allowed here?
I created a table:
CREATE TABLE JB (ENAME VARCHAR (20));
Table created.
Now, if I INSERT:
INSERT INTO VALUES JB (sintes);
ORA-00984: column not allowed here
Why this error, if I insert a number instead of "Sinti", implementation is also possible. No character is not allowed.
What is the column name in this area, its totally strange to me.
Please someone help me.
Thank you and best regards,
SINTESHello
Use quotes around Zack:INSERT INTO JB VALUES ('Sathik');
-
ORA-01733: virtual column not allowed here
Published by: user8731258 on November 29, 2010 12:45 AMUPDATE ( SELECT callingnumber, calledcallzone, b.callzone callzone, b.ndc FROM (SELECT DISTINCT SUBSTR (connectedcallingnumber, 3, 3) callingnumber, calledcallzone,rownum FROM rating_temp WHERE calltype = 0) a, (SELECT * FROM callzone cc WHERE LENGTH (ndc) = 3) b WHERE callingnumber = ndc ) SET calledcallzone = callzone-----VIRTUAL COLUMN NOT ALLOWED HERE
Its simple you used SEPARATE in your first view inline. And so you cannot use columns for UPDATE.
-
virtual column not allowed here?
I'm passing the name of a field as a parameter and I want to use this setting in my update like this statement:
UPDATE WR_MEASURE_VALUE SET p_FieldToUpdate = null, pa_entered_date = sysdate
WHERE WR_MEASURE_VALUE_OID = v_MeasureValueOID_arr (i);
p_FieldToUpdate is the field. I get an error stating that the virtual column not allowed here.
I tried to assign this value to a local variable and got the same thing. What do about it? I didn't create a conditiional for each value that might be stored in p_FieldToUpdate.
Thank youWhat would you do if it is not good to do?
Hard coded updated inside THEN incorporate tree ELSE after column_name
-
ORA-00984 column not allowed here. Help, please.
Hey, I made a table;
CREATE TABLE borrower)
BorId VARCHAR2 (5) NOT NULL,
BorName VARCHAR2 (20).
BorMaxBooks NUMBER (10),
KEY elementary SCHOOL (BorId));
I'm trying to enter values in this table;
INSERT the borrower VALUES)
001, 'Jack Jones', 5);
And I get an error; ORA-00984 column not allowed here. Please can someone help? I tried to change the BorName VARCHAR2 (20) BorName char (20), and all I can think about.It should work by specifying your columns like this.
INSERT INTO Borrower (BorId, BorName, BorMaxBooks) VALUES (001, 'Jack Jones', 5);
Sitjà.
-
Error: ORA-00984: column not allowed here
can you please tell me what is the problem with my request.CREATE TABLE TTAX.Travel_details ( travel_key NUMBER NOT NULL, auth_key VARCHAR2(11) NOT NULL, request_type VARCHAR2(35) NOT NULL, employee_id VARCHAR2(3) NOT NULL, division VARCHAR2(6) NOT NULL, last_name VARCHAR2(20) NOT NULL, first_name VARCHAR2(15) NOT NULL, email VARCHAR2(52), branch VARCHAR2(6), phone_number VARCHAR2(20), alt_contact_number VARCHAR2(20), primary_office_loc VARCHAR2(15), pre_apprvd_trip_yn VARCHAR2(1) DEFAULT N, city VARCHAR2(25), state VARCHAR2(9), start_dt DATE, end_date DATE, state_car_yn VARCHAR2(1) DEFAULT N, justification VARCHAR2(250), airfare_est_cost NUMBER, car_rental_est_cost NUMBER, other_tranp_est_cost NUMBER, ldg_est_cost NUMBER, pd_est_cost NUMBER, other_trav_est_cost NUMBER, pout_org_est_cost NUMBER, tot_est_cost NUMBER, reimburse_yn VARCHAR2(1) DEFAULT N, airfare_outside_pay NUMBER, car_rental_outside_pay NUMBER, other_transp_outside_pay NUMBER, ldg_outside_pay NUMBER, pd_outside_pay NUMBER, other_trav_outside_pay NUMBER, pout_org_outside_pay NUMBER, tot_outside_pay NUMBER, airfare_exp_cost NUMBER, car_rental_exp_cost NUMBER, other_transp_exp_cost NUMBER, pout_org_exp_cost NUMBER, tot_exp_cost NUMBER, pca_num NUMBER, Unit NUMBER, Div_track_number VARCHAR2(15), remarks VARCHAR2(100), fund VARCHAR2(4), Blanket_number VARCHAR2(4), ost_liaison_yn VARCHAR2(1) DEFAULT N ) LOGGING NOCOMPRESS NOCACHE NOPARALLEL NOMONITORING; ALTER TABLE TTAX.Travel_details ADD ( CONSTRAINT Travel_details_PK PRIMARY KEY (travel_key));
What is N? Please try as keep as default 'n' (single quotes)
-
Tables created in a stored procedure cannot be used with dynamic SQL? The impact?
There is a thread on the forum which explains how to create tables within a stored procedure (How to create a table in a stored procedure , however, it does create a table as such, but not how to use it (insert, select, update, etc.) the table in the stored procedure.) Looking around and in the light of the tests, it seems that you need to use dynamic SQL statements to execute ddl in a stored procedure in Oracle DB. In addition, it also seems that you cannot use dynamic SQL statements for reuse (insert, select, update, etc.) the table that was created in the stored procedure? Is this really the case?
If this is the case, I am afraid that if tables cannot be 'created and used"in a stored procedure using the dynamic SQL, as is the case with most of the servers of DB dynamic SQL is not a part of the implementation plan and, therefore, is quite expensive (slow). This is the case with Oracle, and if yes what is the performance impact? (Apparently, with Informix, yield loss is about 3 - 4 times, MS SQL - 4 - 5 times and so on).
In summary, tables created within a stored procedure cannot be 'used' with dynamic SQL, and if so, what is the impact of performance as such?
Thank you and best regards,
Amedeo.
Published by: AGF on March 17, 2009 10:51AGF says:
Hi, Frank.Thank you for your response. I understand that the dynamic SQL is required in this context.
Unfortunately, I am yet to discover "that seeks to" using temporary tables inside stored procedures. I'm helping a migration from MySQL to Oracle DB, and this was one of the dilemmas encountered. I'll post what is the attempt, when more.
In Oracle, we use [global temporary Tables | http://www.psoug.org/reference/OLD/gtt.html?PHPSESSID=67b3adaeaf970906c5e037b23ed380c2] aka TWG these tables need only be created once everything like a normal table, but they act differently when they are used. The data inserted in TWG will be visible at the session that inserted data, allowing you to use the table for their own temporary needs while not collide with them of all sessions. The data of the TWG will be automatically deleted (if not deleted programmatically) when a) a commit is issued or b) the session ends according to the parameter that is used during the creation of the TWG. There is no real need in Oracle to create tables dynamically in code.
I noticed that many people say that the "Creation of the tables within a stored procedure" is not a good idea, but nobody seems necessarily explain why? Think you could elaborate a little bit? Would be appreciated.
The main reason is that when you come to compile PL/SQL code on the database, all explicit references to tables in the code must correspond to an existing table, otherwise a djab error will occur. This is necessary so that Oracle can validate the columns that are referenced, the data types of those columns etc.. These compilation controls are an important element to ensure that the compiled code is as error free as possible (there is no accounting for the logic of programmers though ;)).
If you start to create tables dynamically in your PL/SQL code, so any time you want to reference this table you must ensure that you write your SQL queries dynamically too. Once you start doing this, then Oracle will not be able to validate your SQL syntax, check the types of data or SQL logic. This makes your code more difficult to write and harder to debug, because inevitably it contains errors. It also means that for example if you want to write a simple query to get that one out in a variable value (which would take a single line of SQL with static tables), you end up writing a dynamic slider all for her. Very heavy and very messy. You also get the situation in which, if you create tables dynamically in the code, you are also likely to drop tables dynamically in code. If it is a fixed table name, then in an environment multi-user, you get in a mess well when different user sessions are trying to determine if the table exists already or is the last one to use so they can drop etc. What headache! If you create tables with table names, then variable Dynamics not only make you a lot end up creating (and falling) of objects on the database, which can cause an overload on the update of the data dictionary, but how can ensure you that you clean the tables, if your code has an exception any. Indeed, you'll find yourself with redundant tables lying around on your database, may contain sensitive data that should be removed.
With the TWG, you have none of these issues.
Also, what is the impact on the performance of the dynamic SQL statements in Oracle? I read some contrasting opinions, some indicating that it is not a lot of difference between static SQL and SQL dynamic in more recent versions of Oracle DB (Re: why dynamic sql is slower than static sql is this true?)
When the query runs on the database, there will be no difference in performance because it is just a request for enforcement in the SQL engine. Performance problems may occur if your dynamic query is not binding variable in the query correctly (because this would cause difficult analysis of the query rather than sweet), and also the extra time, to dynamically write the query running.
Another risk of dynamic query is SQL injection which may result in a security risk on the database.
Good programming will have little need for the tables of dynamically created dynamically or SQL.
-
Hello
Please find below scripts.
CREATE OR REPLACE PROCEDURE ARPdrop table test_arp; create table test_arp ( first_name varchar2(1000), last_name varchar2(1000) ); insert into test_arp values ('CONTROL','PANEL'); insert into test_arp values ('ORACLE','SEA'); insert into test_arp values (NULL,'WILLIAMS'); insert into test_arp values ('RAHUL','KUMAR'); {CODE} when i select the above table ,i will be getting the result as shown first_name , last_name CONTROL PANEL ORACLE SEA WILLIAMS RAHUL KUMAR I need to make a table which will be having the following data and structure col1 col2 col3 CONTROL ORACLE RAHUL .i.e , depending on the number of not null values in the first column (first_name), i will be creating a table dynamically ,which is going to have as many columns as the number of values and the naming convention is col1,col2,col........... I designed the below procedure to
AS
C NUMBER: = 1;
BEGIN
FOR I IN (SELECT FIRST_NAME FROM TEST_ARP WHERE THE NAME IS NOT NULL)
LOOP
IF C = 1 THEN
RUN IMMEDIATELY "CREATE TABLE T1 (TO |)" C | ("VARCHAR2 (100))';
IMMEDIATELY EXECUTE "INSERT INTO T1 VALUES (I.FIRST_NAME);
ON THE OTHER
RUN IMMEDIATELY 'ALTER TABLE T1 ADD COL "| C | ("VARCHAR2 (100))';
IMMEDIATELY RUN 'UPDATE T1 SET COLLAR | C | "= I.FIRST_NAME";
END IF;
C: = C + 1;
END LOOP;
END;
But when i execute this code , i get the below error ORA-00984: column not allowed here ORA-06512: at "ARP", line 17 ORA-06512: at line 1 Thanks ..
Has made impression on the request, so that you can see?
Your query is probably looks like this
INSERT INTO T1 VALUES (myname);
But it must have the value in quotes and look like this
INSERT INTO T1 VALUES ('myname');
The USING clause takes care of this for you, but if you build the query yourself you should build properly.
-
Dynamic SQL in PL/SQL process
Hi all
I just found out THAT dynamic SQL does not work in the process of PL/SQL.
example of work using SQL:
declare
number of retval;
Start
Select count (*) retval emp;
: P1_EMP_COUNT: = retval;
end;
Example usage of SQL dynamic works DO NOT:
declare
number of retval;
l_sql varchar2 (4000);
Start
l_sql: = ' select count (*) in retval from emp;
immediately run l_sql;
: P1_EMP_COUNT: = retval;
end;
What have I done wrong? Could someone please help? :)
ChrisTry this modified code
.... begin l_sql := 'select count(*) from emp'; execute immediate l_sql into :P1_EMP_COUNT ; end; ...
CITY
-
I posted this already, but I can't so I'm posting again so apologies...
I downloaded Oracle Express. I used the utilities tab and downloaded a file. I can see the file with "select * from all_tables ' and I can't
see that I am the owner. I have s/n privs, and using the object browser, I can see the data and and I have granted all privileges to the public.
Although I can see the table of the dictionary with SQL, and object browser, I am the owner; but, SQL will not allow me
describe the table
Select from the table
even remove the table, so I can recreate another way.
All I get never the SQL tab or BACK SQL command line is "ORA-00942: table or view does not exist '- but it does not exist under my ownership and all privileges have been granted on the table. What's wrong? Thank you... Richard ([email protected])You need to learn how to CUT & PASTE
Select * from 'Movie '.
has provided previously you & you still ignore it.
Maybe you are looking for
-
How can I get my restriction for 6s iphone code
I have an iphone 6s im trying to rest the phone, so I can give my daughter, and she asks. A password where it do? I never put a foot ive never even supported my phone to the computer... Help, please!
-
I have an Air of iPad and iPhone 5 s. I did the two-step verification and wrote the secret code 4 digit. I couldn't get into my iPad. Talked to about 4 Apple technicians. They guided me to restore my iPad to factory default. My photos and notes
-
An upgrade to El Capitan will change my favorites?
Will be an update of Snow Leopard 10.6.8 effect a change in my favorites?
-
Satellite C855-1GQ: battery not: the adapter is connected
Hello This is my first post here, I hope that someone can help me!I have a Toshiba Satellite C855 portable 1GQ. So, basically, I managed to break the end of the original charger (the part that plugs into the laptop) and stupidly tried a charger of si
-
Beats Audio volume buttons not working not
The volume buttons (F9, F10 and F11) on my HP Pavilion dv7-6c95dx suddenly stopped working. When I press the buttons that the OSD Audio Beats rises and display current settings, but the volume does not change or cut. All other buttons (WiFi, display