Awkward SQL Insert
Hi All,
I am using asp. I have a series of Hidden Fields that need to
be inserted
into a table in my SQL Server 2000 db. The table stores the
ID (PK),
BookingID (FK), Firstname, Surname, PickUp Address and
DropOff Address of
Passengers who have booked a vehicle with the Chauffeur
Company I am
designing the web app for. This table is a child table of the
'Bookings'
table which holds BookingID, BookingDate, BookingTime
etc.etc. The values
for the child table are held in the series of hidden fields.
The hidden fields are:
Firstname1, Firstname2, Firstname3, Firstname4, Firstname5,
Firstname6,
Surname1, Surname2, Surname3, Surname4, Surname5, Surname6,
PickUp1, PickUp2, PickUp3, PickUp4, PickUp5, PickUp6,
DropOff1, DropOff2, DropOff3, DropOff4, DropOff5, DropOff6
The number of passengers can vary between 1 to 6 so some of
these hidden
fields can sometimes contain empty values.
I originally stored this data in the main Bookings table with
each Passenger
Name, Pickup Address etc as a seperate column but as this
violates the First
Normal Form I changed the structure to include this new child
table.
My problem is I am not sure how is best to handle the INSERT.
It will be
part of a Stored Proc. that firstly inserts to the Bookings
table, grabs the
BookingID for it to be stored as FK in the child table and
then Inserts the
hidden field values into the child table. I am not sure
though, whether to
insert the values as seperate statements as every hidden
field for every
passenger has to be named differently eg. Firstname1,
Firstname2, etc. so
should I do something like:
INSERT INTO TheChildTable (BookingID, Firstname, Surname,
PickUp, DropOff)
VALUES ( @BookingID, @Firstname1, @Surname1, @PickUp1,
@DropOff1)
Then
INSERT INTO TheChildTable (BookingID, Firstname, Surname,
PickUp, DropOff)
VALUES ( @BookingID, @Firstname2, @Surname2, @PickUp2,
@DropOff2)
And so-on, all the way up to Passenger 6 (bearing in mind
that there could
only be 1 or 2 passengers and the rest of the hidden fields
could be empty.
This would then mean that I have empty rows in the table all
linked to a
BookingID. This, I don't want). I do have a hidden field that
holds the
number of passengers that are to be inserted, so maybe this
could somehow be
utilized to control the number of Inserts??
Although this method is flawed, I cannot think of another way
to do this
Insert, given the circumstances around it. Can anyone offer
any advice
please.
"AnchorMan" <[email protected]> wrote in message
news:e80krk$ehu$[email protected]..
>
> INSERT INTO TheChildTable (BookingID, Firstname,
Surname, PickUp, DropOff)
> VALUES ( @BookingID, @Firstname1, @Surname1, @PickUp1,
@DropOff1)
>
> Then
>
> INSERT INTO TheChildTable (BookingID, Firstname,
Surname, PickUp, DropOff)
> VALUES ( @BookingID, @Firstname2, @Surname2, @PickUp2,
@DropOff2)
>
IF LEN(@Surname2) > 0
INSERT INTO TheChildTable (BookingID, Firstname, Surname,
PickUp,
DropOff)
VALUES ( @BookingID, @Firstname2, @Surname2, @PickUp2,
@DropOff2)
IF LEN(@Surname3) > 0
INSERT INTO TheChildTable (BookingID, Firstname, Surname,
PickUp,
DropOff)
VALUES ( @BookingID, @Firstname3, @Surname3, @PickUp3,
@DropOff3)
and so on and so forth.
Now you won't have any blank rows. :)
Similar Messages
-
SQL Insert Error Error in allocating a connection. Cause: No PasswordCreden
Friends,
While testing my connection in the Sun java Application Server , I get the following error .
"SQL Insert Error Error in allocating a connection. Cause: No PasswordCredential found "
Can somebody please guide ?
regards
DhirajIf you are using Netbeans, then this link might help:
http://forum.java.sun.com/thread.jspa?forumID=136&threadID=598423
Otherwise, have you try this ?
Verify your sun-ejb-jar.xml does not use default-resource-princinpal element:
<res-ref-name>jdbc/pdisasdb</res-ref-name>
<jndi-name>jdbc/pdisasdb</jndi-name>
<default-resource-principal>
<name>myname</name>
<password>geheim</password>
</default-resource-principal>
</resource-ref> -
SQL insert statement in java with Excel file
Dear all,
I wrote a program is as the follow:
import java.io.*;
import java.sql.*;
public class handleExcel
Connection con = null;
Statement stmnt = null;
public handleExcel()
String excel = "C:\\EGS\\app_files\\info_update_form_exported_data.xls";
try
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String str="jdbc:odbc:DRIVER=Microsoft Excel Driver (*.xls);DBQ=" + excel + ";";
String sql = "insert into [Sheet1$] (Name, Age, Test1, Test2, Test3) values ('mary','16','aa','bb','vv')";
con = DriverManager.getConnection(str, "", "");
stmnt = con.createStatement();
stmnt.executeUpdate(sql);
catch(Exception e)
System.out.println("con is error!!");
e.printStackTrace();
public static void main(String[] args)
handleExcel TestHpc = new handleExcel();
But when I run it, the error is as the follow:
java.sql.SQLException: [Microsoft][ODBC Excel Driver]
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:288)
at hk.gov.edb.util.handleExcel.<init>(handleExcel.java:31)
at hk.gov.edb.util.handleExcel.main(handleExcel.java:97)
Please help me to solve this problem. Thank you so much for your help!
Regards,
kzyoHi
You can use the[b] jakarta POI api in order to read/write Excel file from java. Pure Java, no drivers nedeed.
I tested and ok.
Hope this helps -
How to resolve ORA-00001 Error in SQL Insert?
Hi all, I need your appreciated help.
I make a plsql procedure that is inserting a row according cursor value, I'm having oracle error ORA-00001: unique constraint (constraint_name) violated.
You may see this message if a duplicate entry exists at a different level: in RDBMS MySQL I have the syntax IGNORE to resolve this duplication error... and in Oracle ?
Thanks for your time and hints.
Miguelitouser6317803 wrote:
How to resolve ORA-00001 Error in SQL Insert?ORA-00001 means table has unique/primary key/index and you are trying to insert a row with key value that already exists in the table. I'll assume table COUNTRIES has primary key on COUNTRY_ID. Then change SQL to:
SQL = "INSERT INTO COUNTRIES(COUNTRY_ID,COUNTRY_NAME,REGION_ID) SELECT 'BZ','BLZ',3 FROM DUAL WHERE NOT EXISTS(SELECT 1 FROM COUNTRIES WHERE COUNTRY_ID = 'BZ')"There is a good chance table COUNTRIES also has unique key/index on COUNTRY_NAME. If so use:
SQL = "INSERT INTO COUNTRIES(COUNTRY_ID,COUNTRY_NAME,REGION_ID) SELECT 'BZ','BLZ',3 FROM DUAL WHERE NOT EXISTS(SELECT 1 FROM COUNTRIES WHERE COUNTRY_ID = 'BZ' OR COUNTRY_NAME = 'BLZ')"SY. -
Apostrophe in a String bombs a SQL insert
I am having an issue with a Customer String parameter that is being used in a SQL INSERT. The customer name may from time to time have an apostrophe in it that causes our SQL INSERT to bomb on a missing comma error. I have tried to do this two separate ways:
1)
String query = "INSERT into CUSTOMER VALUES(" + account[0].custAcctNbr + ",'" + account[0].companyNm + "'," +
"'IN',null," + salesPerson[0].salespersonID + "," + "null,null,null,null,null," +
"null,null,null,null,null,null,null,null,null)";
This works until an apostrophe is in the companyNm varaiable.
2)
PreparedStatement insertCustomer = bcc_conn_cust.prepareStatement(
"INSERT into CUSTOMER VALUES(?,?,?,null,?,null,null,null,null,null,null,null,null,null,null,null,null,null,null");
insertCustomer.setInt(1,Integer.parseInt(account[0].custAcctNbr));
insertCustomer.setString(2,account[0].companyNm);
insertCustomer.setString(3,"IN");
insertCustomer.setInt(4,salesPerson[0].salespersonID);
insertCustomer.executeUpdate();
This also works when there is no apostrophe. However both bomb when it is present. Is there anyway to get around this, short of parsing a company name every single time we insert a new customer?Do you have any idea why this is not working? yes, whatever driver you are using isn't implementing this properly.
variable I am using is a String variable, that has a
value of Bates' Brownies. According to all I read, it
seems I have used the Prepared Statement correctly but
it is giving me that missing comma error. I would
really rather not have to search every single company
name as it is entered.well unless you can either find another driver or fix the one you've
got i can't see what else you can do...
here is some code to help you along with that.
private String replaceQuotes(String toReplace){
StringBuffer buff = new StringBuffer(toReplace);
for(int i=0;i<buff.length();i++){
if(buff.charAt(i)=='\''){
buff.insert(i,'\'');
i++;
return buff.toString(); -
How I can make SQL Insert file on schedule
Dear Community Members;
Hope all you will be perfect. I required your urgent response on my query. I want to make an SQL Insert file, means I want to insert data from query in one table and after that, the data export in an SQL file as a SQL Insert file.
All these things want to do on schedule not manually.
Can anyone help and guide me how I can do it?Dear Members;
Actually, we are working on two different applications, like sale and account. Now we want to post sale information in account system without any DBLink, for that I want to make a file where my data store in SQL Insert Statement format on scheduling, means I want to create a procedure which create this file on scheduling. After that same as I want to create a procedure in other system for read that file and execute. Now I have been found Oracle functionality but still I am facing a problem. The problem is that my procedure create a file with a single record not the all fetched record. My Procedure is as:
DECLARE
fileHandler UTL_FILE.FILE_TYPE;
INSERT1 VARCHAR2(200);
INSERT2 VARCHAR2(200);
cursor c1 is
select T.QTY, T.SLIP_NO, T.STORE_NO, T.Item_Code
from test t
where T.STORE_NO = 1;
BEGIN
for cur_rec in c1 loop
INSERT1 := 'INSERT INTO TEST_2(Item_Code,STORE_NO,QTY,SLIP_NO) VALUES(';
INSERT2 := INSERT1||CUR_REC.Item_Code||','||CUR_REC.STORE_NO||','||CUR_REC.QTY||','||CUR_REC.SLIP_NO||')' ;
fileHandler := UTL_FILE.FOPEN('E:\Oracle\admin\udump', 'test_file2.SQL', 'W');
--UTL_FILE.PUTF(fileHandler, 'Writing TO a file\n');
UTL_FILE.PUTF(fileHandler, INSERT2);
UTL_FILE.PUTF(fileHandler, '\n commit;');
UTL_FILE.FCLOSE(fileHandler);
END LOOP;
EXCEPTION
WHEN utl_file.invalid_path THEN
raise_application_error(-20000, 'ERROR: Invalid PATH FOR file.');
END;
Please suggest/guide me where I am doing something wrong or missing. I'll thankful for your help. -
Sql insert statement will fail if the data value has empty line
Hi,
I notice if the insert statement in my .sql file contains data that has new line (enter key), the insert will fail.
For example:
insert into mytable (message)
values ('this is the first line
this is the second line that will cause insert statement to fail
so as this third line');
commit;
How to overcome this?
Please advise.
Thank you.
Message was edited by:
bchurn
Message was edited by:
bchurnIt did not return me any error. What is the error you are receiving ??
SQL> create table mytable (message varchar2(500));
Table created.
SQL> insert into mytable (message)
2 values ('this is the first line
3 this is the second line that will cause insert statement to fail
4 so as this third line');
1 row created.
SQL> @c:\test.txt
1 row created.contents of c:\test.txt
<<
insert into mytable (message)
values ('this is the first line
this is the second line that will cause insert statement to fail
so as this third line');
>> -
SQL insert with select statement having strange results
So I have the below sql (edited a bit). Now here's the problem.
I can run the select statement just fine, i get 48 rows back. When I run with the insert statement, a total of 9062 rows are inserted. What gives?
<SQL>
INSERT INTO mars_aes_data
(rpt_id, shpdt, blno, stt, shpr_nad, branch_tableS, csgn_nad,
csgnnm1, foreign_code, pnt_des, des, eccn_no, entity_no,
odtc_cert_ind, dep_date, equipment_no, haz_flag, schd_no,
schd_desc, rec_value, iso_ulti_dest, odtc_exempt, itn,
liscence_no, liscence_flag, liscence_code, mblno, mot,
cntry_load, pnt_load, origin_state, airline_prefix, qty1, qty2,
ref_val, related, routed_flag, scac, odtc_indicator, seal_no,
line_no, port_export, port_unlading, shipnum, shprnm1, veh_title,
total_value, odtc_cat_code, unit1, unit2)
SELECT 49, schemaP.tableS.shpdt, schemaP.tableS.blno,
schemaP.tableS.stt, schemaP.tableS.shpr_nad,
schemaP.tableM.branch_tableS, schemaP.tableS.csgn_nad,
schemaP.tableS.csgnnm1, schemaP.tableD.foreign_code,
schemaP.tableS.pnt_des, schemaP.tableS.des,
schemaP.tableD.eccn_no, schemaP.tableN.entity_no,
schemaP.tableD.odtc_cert_ind, schemaP.tableM.dep_date,
schemaP.tableM.equipment_no, schemaP.tableM.haz_flag,
schemaP.tableD.schd_no, schemaP.tableD.schd_desc,
schemaP.tableD.rec_value,
schemaP.tableM.iso_ulti_dest,
schemaP.tableD.odtc_exempt, schemaP.tableM.itn,
schemaP.tableD.liscence_no,
schemaP.tableM.liscence_flag,
schemaP.tableD.liscence_code, schemaP.tableS.mblno,
schemaP.tableM.mot, schemaP.tableS.cntry_load,
schemaP.tableS.pnt_load, schemaP.tableM.origin_state,
schemaP.tableM.airline_prefix, schemaP.tableD.qty1,
schemaP.tableD.qty2,
schemaC.func_getRefs@link (schemaP.tableS.ptt, 'ZYX'),
schemaP.tableM.related, schemaP.tableM.routed_flag,
schemaP.tableM.scac, schemaP.tableD.odtc_indicator,
schemaP.tableM.seal_no, schemaP.tableD.line_no,
schemaP.tableM.port_export,
schemaP.tableM.port_unlading, schemaP.tableS.shipnum,
schemaP.tableS.shprnm1, schemaP.tableV.veh_title,
schemaP.tableM.total_value,
schemaP.tableD.odtc_cat_code, schemaP.tableD.unit1,
schemaP.tableD.unit2
FROM schemaP.tableD@link,
schemaP.tableM@link,
schemaP.tableN@link,
schemaP.tableS@link,
schemaP.tableV@link
WHERE tableM.answer IN ('123', '456')
AND SUBSTR (tableS.area, 1, 1) IN ('A', 'S')
AND entity_no IN
('A',
'B',
'C',
'D',
'E',
AND TO_DATE (SUBSTR (tableM.time_stamp, 1, 8), 'YYYYMMDD')
BETWEEN '01-Mar-2009'
AND '31-Mar-2009'
AND tableN.shipment= tableD.shipment(+)
AND tableN.shipment= tableS.shipnum
AND tableN.shipment= tableM.shipment(+)
AND tableN.shipment= tableV.shipment(+)
<SQL>
Edited by: user11263048 on Jun 12, 2009 7:23 AM
Edited by: user11263048 on Jun 12, 2009 7:27 AMCan you change this:
BETWEEN '01-Mar-2009'
AND '31-Mar-2009'To this:
BETWEEN TO_DATE('01-Mar-2009', 'DD-MON-YYYY')
AND TO_DATE('31-Mar-2009','DD-MON-YYYY')That may make no difference but you should never rely on implicit conversions like that, they're always likely to cause you nasty surprises.
If you're still getting the discrepancy, instead of and INSERT-SELECT, can you try a CREATE TABLE AS SELECT... just to see if you get the same result. -
Jdbc sql insert to oracle DB.
Dear All,
I'm using the jdbc connector to insert data directly into an Oracle database table. I've got the SQL insert command which XI has generated by using the logSQLStatement parameter and I've proved the statement is good by pasting it directly into Toad where it is executed perfectly. However XI is throwing the following errors;-
Unable to execute statement for table or stored procedure. 'SI_ORDER' (Structure 'STATEMENT') due to java.sql.SQLException: ORA-01858: a non-numeric character was found where a numeric was expected
MP: exception caught with cause com.sap.aii.af.ra.ms.api.RecoverableException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'SI_ORDER' (structure 'STATEMENT'): java.sql.SQLException: ORA-01858: a non-numeric character was found where a numeric was expected
Does anyone know what might be the problem or even where I should start to troubleshoot this?
Any help is much appreciated.
Pete.Your question is how to load data from a text file into arrays?
Start with a
StreamReader to read the file one line at a time. Then break each line into individual values, and add each value to a
List<T>. Then call .ToArray() on each list to set the value of each array-bound parameter.
David
David http://blogs.msdn.com/b/dbrowne/ -
SQL insert scripts generation from repository data xml file
Hi All,
I want to generate sql insert scripts from repository data xml file which contain <add-item>elements.
Example: data xml file is contains
<add-item item-descriptor="user" id="741">
<set-property name="gender"><![CDATA[female]]></set-property>
<set-property name="emailStatus"><![CDATA[__NULL__]]></set-property>
<set-property name="receiveEmail"><![CDATA[__NULL__]]></set-property>
<set-property name="email"><![CDATA[[email protected]]]></set-property>
<set-property name="password"><![CDATA[a694cb1d6d011eddc444acb77338c1df6a22bac5de26330e2fe1d20f15f97ed6]]></set-property>
<!-- rdonly derived <set-property name="abandonedOrderCount"><![CDATA[0]]></set-property> -->
<set-property name="locale"><![CDATA[de_DE]]></set-property>
<set-property name="userType"><![CDATA[1]]></set-property>
<set-property name="autoLogin"><![CDATA[__NULL__]]></set-property>
<set-property name="lastName"><![CDATA[Springford]]></set-property>
<set-property name="member"><![CDATA[true]]></set-property>
<set-property name="dateOfBirth"><![CDATA[7/18/1951 00:00:00]]></set-property>
<!-- rdonly derived <set-property name="age"><![CDATA[61]]></set-property> -->
<set-property name="registrationDate"><![CDATA[5/16/1996 00:00:00]]></set-property>
<set-property name="login"><![CDATA[sally]]></set-property>
<set-property name="lastActivity"><![CDATA[6/9/1999 00:00:00]]></set-property>
<set-property name="homeAddress"><![CDATA[741]]></set-property>
<set-property name="passwordSalt"><![CDATA[sally]]></set-property>
<set-property name="generatedPassword"><![CDATA[__NULL__]]></set-property>
<set-property name="firstName"><![CDATA[Sally]]></set-property>
<set-property name="lastPasswordUpdate"><![CDATA[__NULL__]]></set-property>
</add-item>
Thanks
SivaHI Rohan,
Thanks for reply..
I have checked the startSQLRepository script by using this we can export or import repository data from xml to repository.But in startSQLRepository there is no attribute to generate sql
insert scripts from data xmls but there is a option to get the sql scripts(-ouputSQL). -
Export sql insert generates to_date('1987-04-19','DD-MON-RR')
export sql insert generates buggy dates :
Scott --> Tables --> EMP --> export --> sql inserts
Columns --> ALL
Insert into "EMP" ("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (7788,'SCOTT','ANALYST',7566,to_date('1987-04-19','DD-MON-RR'),3000,null,20);
the to_date is invalid.
this bug happens only when selecting ALL columns
cheers
LaurentHi Sue,
I have version 1.0.0.15.57 Linux x86 (downloaded last week).
Is there a way to produce trace files or additional info so that we can debug this one?
$ env
PATH=/bin:/usr/bin
LANG=en_US.UTF-8
HOME=/home/lsc
DISPLAY=:0.0
_=/usr/bin/env
$ cat /etc/SuSE-release
SUSE Linux Enterprise Server 10 (i586)
VERSION = 10
$ /home/lsc/sqldeveloper/sqldeveloper
Oracle SQL Developer 1.0
Copyright (c) 2005 Oracle Corporation. All Rights Reserved.
Working directory is /home/lsc/sqldeveloper/jdev/bin
Assert: Initializing.. [email protected]
Assert: Unknown Node:8: USER
Assert: Unknown Node:8: SHARED QUERIES
Assert: Unknown Node:8: TABLE EDITORS
Assert: Unknown Node:8: VIEWS
Assert: Unknown Node:8: MVIEWS
Assert: Unknown Node:8: SYNONYM
Assert: Unknown Node:8: SEQ
Assert: Unknown Node:8: Recycle Bin
Assert: Unknown Node:8: DB Link
Assert: Unknown Node:8: MVIEW LOG
Assert: Unknown Node:8: PLSQL
Assert: Unknown Node:8: TRigger
Assert: Unknown Node:8: INDEX
Assert: SQLView initedAssert: Folder:Unsupported node in report.xml:#text
Assert: Folder:Unsupported node in report.xml:#text
Assert: Folder:Unsupported node in report.xml:#text
Assert: Folder:Unsupported node in report.xml:#text
Assert: Folder:Unsupported node in report.xml:#text
Assert: Folder:Unsupported node in report.xml:#text
Assert: Folder:Unsupported node in report.xml:#text
Assert: Folder:Unsupported node in report.xml:#textexpand "connections "
expand "LSC02"
expand "Tables"
select "EMP"
right-click EMP
chose EXPORT--SQL INSERT
Format=INSERT Output=File TABLE=EMP File=/home/lsc/EMP.sql Columns=ALL
Click apply
$ cat EMP.sql
-- INSERTING into EMP
Insert into "EMP" ("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (7369,'SMITH','CLERK',7902,to_date('1980-12-17','DD-MON-RR'),800,null,20);
Insert into "EMP" ("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (7499,'ALLEN','SALESMAN',7698,to_date('1981-02-20','DD-MON-RR'),1600,300,30);
Insert into "EMP" ("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (7521,'WARD','SALESMAN',7698,to_date('1981-02-22','DD-MON-RR'),1250,500,30);
Insert into "EMP" ("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (7566,'JONES','MANAGER',7839,to_date('1981-04-02','DD-MON-RR'),2975,null,20);
Insert into "EMP" ("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (7654,'MARTIN','SALESMAN',7698,to_date('1981-09-28','DD-MON-RR'),1250,1400,30);
Insert into "EMP" ("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (7698,'BLAKE','MANAGER',7839,to_date('1981-05-01','DD-MON-RR'),2850,null,30);
Insert into "EMP" ("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (7782,'CLARK','MANAGER',7839,to_date('1981-06-09','DD-MON-RR'),2450,null,10);
Insert into "EMP" ("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (7788,'SCOTT','ANALYST',7566,to_date('1987-04-19','DD-MON-RR'),3800,null,20);
Insert into "EMP" ("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (7839,'KING','PRESIDENT',null,to_date('1981-11-17','DD-MON-RR'),5000,null,10);
Insert into "EMP" ("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (7844,'TURNER','SALESMAN',7698,to_date('1981-09-08','DD-MON-RR'),1500,0,30);
Insert into "EMP" ("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (7876,'ADAMS','CLERK',7788,to_date('1987-05-23','DD-MON-RR'),1100,null,20);
Insert into "EMP" ("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (7900,'JAMES','CLERK',7698,to_date('1981-12-03','DD-MON-RR'),950,null,30);
Insert into "EMP" ("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (7902,'FORD','ANALYST',7566,to_date('1981-12-03','DD-MON-RR'),3000,null,20);
Insert into "EMP" ("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values (7934,'MILLER','CLERK',7782,to_date('1982-01-23','DD-MON-RR'),1300,null,10); -
Generate SQL Insert Statements
Hello,
I am testing generating insert statements for which I have a function which will return a sql statement.
This sql statement when I execute would results as sql insert statements.
What I am trying to acheive through a procedure is when I execute function, the result I would like to execute automatically and then the second sql I would like to store to a control file or sql file.
How can I acheive this?
Any help is very helpful
Regards
Edited by: user20090209 on Aug 20, 2009 11:34 AMHere is the function to generate sql
CREATE OR REPLACE function insert_sql(v_table_name varchar2)
return varchar2 as
b_found boolean := false;
v varchar2(32000);
v1 varchar2(32000);
v2 varchar2(32000);
begin
for s in (
select *
from all_tables
where table_name=upper(v_table_name)
--and owner=upper(v_owner)
) loop
b_found := true;
for ss in (
select *
from all_tab_columns
where table_name = s.table_name
order by column_id
) loop
if ss.data_type='NUMBER' then
v1:=v1||','||ss.column_name;
v2:=v2||',''''''||to_char('||ss.column_name||')||''''''';
end if;
if ss.data_type in ('VARCHAR2','CHAR') then
v1:=v1||','||ss.column_name;
v2:=v2||',''''''||replace(replace('||ss.column_name||','''''''',''''''''''''),''&'','''')||''''''';
end if;
if ss.data_type='DATE' then
v1:=v1||','||ss.column_name;
v2:=v2||',to_date(''''''||to_char('||ss.column_name||',''dd.mm.yyyy hh:mi:ss'')||'''''',''''dd.mm.yyyy hh:mi:ss'''')';
end if;
end loop;
v:='select ''insert into '||s.table_name||' (';
v:=v||substr(v1,2,9999)||') '||chr(10)||' values ('||substr(v2,2,9999)||'); '' txt from '||s.table_name;
end loop;
if not b_found then
v:='- Table ' || v_table_name || ' not found';
else
v:=v;
end if;
return v;
end;
/And I am calling like
CREATE OR REPLACE PROCEDURE test_gen_script_exec IS
type v_ref_cur is REF CURSOR;
v_ref_cur_var v_ref_cur;
v_temp_sql VARCHAR2(4000);
v_sql varchar2(4000);
begin
v_sql := insert_sql('table_name');--change here
open v_ref_cur_var for v_sql;
loop
fetch v_ref_cur_var into v_temp_sql;
exit when v_ref_cur_var%notfound;
execute immediate v_temp_sql;
end loop;
close v_ref_cur_var;
end;
/Edited by: user20090209 on Aug 20, 2009 1:24 PM -
Hello to everybody,
I'm using SQL Developer 1.0.0.15.57 in an Italian Windows XP Professional SP2.
I'm exporting a table as "SQL Insert" and I have the following problem: the exported INSERT instruction contains, i.e., 123,45 instead of 123.45 so, running the INSERT, Oracle 10 tells me too much values were given because
Value1, 123,45, Value2, ...
is wrong: it should be
Value1, 123.45, Value2, ...
I think this is a problem of the Internation settings (in Italy we use , as decimal separator instead of the . ). Does anybody know how to solve this?
For the moment I have changed my Internal Settings with USA and, after arestart, this is fixed. However now there is another less heavy problem: the dates are written in English like to_date('01-JAN-06', ... instead of to_date('01-GEN-06', ... but I can fix it with a search&replace function.
Thank you in advance
AndreaHello. I'm trying to find a solution for this too. In Venezuela we also use , as decimal separator. Has anybody found a solution for this? It is absolutly necesary to change the international settings of my pc?
Thanks!
Message was edited by:
JeanK -
Export as SQL INSERT generates dud SQL
When I attempted to export data from a table as SQL INSERT statements it generated the statements with single quotes around the table name:
SQL> Insert into 'JOHN_SMITH' values ('162142','89')
2 /
Insert into 'JOHN_SMITH' values ('162142','89')
ERROR at line 1:
ORA-00903: invalid table name
SQL> Fortunately my text editor can do the necessary global replace :)
SQL> Insert into "JOHN_SMITH" values ('162142','89')
2 /
1 row created.
SQL> I am using Raptor #919
Cheers, APCWanted to clarify the table in insert - in the EA4 release, we will not wrap the table name in quotes at all, if you want to preserve multi-byte characters or mixed case table names, you need to wrap the table name in double quotes. We just removed the single quotes we had incorrectly put in. This makes it consistent with creating and modifying a table - i.e. you provide the quotes if you want them.
-- Sharon -
I am trying to take data from a form and insert it into the mySQL db.
this is my update stuff:
s = "INSERT INTO users ";
s += " "(" id"," name"," email"," age"," gender"," zipcode"," username"," password")"";
s += " VALUES "("'"+name+"'"," '"+email+"'"," '"+age+"'"," '"+gender+"'"," '"+zipcode+"'"," '"+username+"'"," '"+password+"'")"";
PreparedStatement stmt = conn.prepareStatement();
stmt.executeUpdate(s);
out.write("Updating");
And then I get this error:
Ex-Message :Syntax error or access violation, message from server: "You have an error in your SQL syntax near '' at line 1" Ex-Code :1064 Ex-SQLState:42000 Ex-Next :null
Any ideas?Your prepared statement should look something like this:
s = "INSERT INTO users ";
s += " (name, email, age, gender, zipcode, username, password)";
s += " VALUES (?,?,?,?,?,?,?)";
stmt.setString( 1, "value for name" );
stmt.setString( 2, "value for email" );
stmt.setInt( 3, 44);
// some info on how to set the type of a parameter value:
// http://developer.java.sun.com/developer/onlineTraining/Database/JDBC20Intro/JDBC20.html#JDBC208
...http://developer.java.sun.com/developer/onlineTraining/Database/JDBC20Intro/JDBC20.html#JDBC207
Try to fill out the following value for name:
"(=enter)
UNION select 1 as 'one' --"
I am not sure if prepared statements take care of sql insertion
http://www.sensepost.com/misc/SQLinsertion.htm
If it doesn't I would replace the ' with '' (1 single quote with 2 single quotes)
Maybe you are looking for
-
Is it possible to connect my 2008 black macbook, to my new 2014 macbook pro retina display screen to make a dual monitor. If this is possible what cables would I need to buy?
-
Asynchrono​us call of a re-entrant VI hangs
I am trying to use the Start Asynchronous Call Node to open a re-entrant sub-VI in "fire and forget" mode. To get the hang of it, I put together the attached test application. Clicking "Add Channel" in the main VI launches the subVI, passing it a d
-
Help! I went to download the Amazon MP3 download software and now iTunes won't play anything anymore.
-
Is is true that when queries are saved in roles, URL for display of the query in the WEB is created? If yes , where I can see this URL. Thanks
-
Bad Battery life Mac Book pro 13 inch after installing mountain lion?
My battery runs out of juice very quickly after installing lion + for the first time I can hear the fan. So the machine seems to be working hard?! Anyone a clue? Erik