Using Subquery in Prepared Statement
can i use subquery in my insert using prepared statement
need to specify the * property
eg: insert into table1 values(select * from table2)
can i use subquery in my insert using prepared
statement
need to specify the * property
eg: insert into table1 values(select * from table2)Subqueries are perfectly okay, of course, but I think the proper idiom is:
INSERT INTO foo(a, b, c)
SELECT x, y, z
FROM bar
WHERE x = 'baz'MOD
Similar Messages
-
Using partition in prepared statement
Hello,
I am connecting to an oracle 9i database and write a prepared statement like
String query = "SELECT * FROM ADM.TABLE1 PARTITION (TABLE1_?)";
PreparedStatement pstmt = dbConnection.prepareStatement(query);
pstmt.setString(1, "20" + callDate); // Partitions are like TABLE1_20030605
ResultSet rs = pstmt.executeQuery();
I get this error ORA-00933: SQL command not properly ended
Any ideas if i am substituting the value correctly or if this is the right way to use prepared statement ?It is the wrong way to use a prepared statement.
You will need to create the string dynamically. -
Using once created prepared statement with different connections in Oracle
Can I use same statement cash using different connections in Oracle
For example I have a prepared statement p1. After its using i close connection (return it to the pool)
Next time I want use p1 statement using another connection.
Question : When I creat p1 in second time ,is it returned from cash or created as a new statement. And what I should do to use once prepared statement using differend connections.
Thaks.As far as I know a PreparedStatement lives and dies with the Connection that created it. So, you cannot use a PreparedStatement with other Connection instances than the one that created it.
You will have to recreate the PreparedStatement for each time you open a connection, or use the same PreparedStatement and NOT close the Connection in between. The last suggestion can be risky though, if you never close the connection...
Jakob Jenkov
www.jenkov.com -
USING SUBQUERY IN SELECT STATEMENT
I am looking at reusing the results of a first query in a second select statement.
I have a first table "ACTIVE_FIELDS" in which I maintain the columns I want to query.
Table name ACTIVE_FIELDS
Field - Status
CODE - ACTIVE
DESCRIPTION - ACTIVE
NAME - INACTIVE
So I get the list of active fields by doing :
SELECT FIELD FROM ACTIVE_FIELDS WHERE STATUS=ACTIVE
It gives me : Code and Description.
I have then a second table MATERIAL with 3 columns CODE, DESCRIPTION and NAME.
I am looking at doing a query against MATERIAL table as follows
SELECT (SELECT FIELD FROM ACTIVE_FIELDS WHERE STATUS=ACTIVE) from MATERIAL and I expect to only get columns CODE and DESCRIPTION in the result.
If I want to add the NAME field in the result of my query, I just have to change status of NAME field in the eh ACTIVE_FIELDS table..
Can anybody help me with the exact syntax, I must miss a function to convert the result of the first query..that data model looks suspiciously like an attribute-value generic model, thus the need for that funky sql.
read this thread.
Re: SIMPLE Database Design Problem ! -
Prepared Statement - Using IN()
Does anybody have a good solution to using an IN clause in a preapred Statement?
The query I have might be "Select * from dual where 1 IN(1,2,3,4);"
OR
"Select * from dual where 1 IN(1,2,3,4, 5, 6, 7);"
OR
"Select * from dual where 1 IN(n number of arguments);"
So I don't know how to parameterize this to take advantage of prepared statements.
Does anybody have any solutions?So if you can't use IN with prepared statements, then is it better not to use prepared statements so we don't blow through the prepared statement cache?
-
Batch updates with callable/prepared statement?
The document http://edocs.bea.com/wls/docs70/oracle/advanced.html#1158797 states
that "Using Batch updates with the callableStatement or preparedStatement is
not supported". What does that actually mean? We have used both callable and prepared
statements with the batch update in our current project (with the Oracle 817 db).
It seems to run ok anyway.So the documentation should state that batch updates do not work ok in old versions
of JDriver for Oracle, BUT work correctly with newer version. Additionally, batch
updates work ok when used with Oracle supplied jdbc-drivers?
"Stephen Felts" <[email protected]> wrote:
Support for addBatch and executeBatch in the WLS Jdriver for Oracle was
added in 7.0SP2.
It was not available in 6.X or 7.0 or 7.0SP1.
"Janne" <[email protected]> wrote in message news:3edb0cdc$[email protected]..
The document http://edocs.bea.com/wls/docs70/oracle/advanced.html#1158797
states
that "Using Batch updates with the callableStatement or preparedStatementis
not supported". What does that actually mean? We have used both callableand prepared
statements with the batch update in our current project (with the Oracle817 db).
It seems to run ok anyway. -
Hi All,
I had the following code but it shows me an errors
Will you please find out where i made mistake.
Is it possible to use nulls in prepared statement as below.
String result=null;
int i=null;
int j=null;
try
String query= "Select TO_NUMBER(pk2_value) organization_id
, TO_NUMBER(pk1_value) item_id
FROM ENG_CHANGE_SUBJECTS
WHERE pk1_value IS NOT NULL
AND pk2_value IS NOT NULL
AND change_line_id IS NULL
AND entity_name like 'EGO_ITEM'
AND change_id = ?";
PreparedStatement pstmt=oaapplicationmodule.getOADBTransaction().getJdbcConnection().prepareStatement(query);
ResultSet rs=pstmt.executeQuery();
while(rs.next())
i=rs.getInt("item_id");
j= rs.getInt("organization_id");
result+=i+"\t\t"+j+"\n";
catch(SQLException sqlexception)
sqlexception.printStackTrace();
Regards
Zaheeri=rs.getInt("item_id");
j= rs.getInt("organization_id");
this is not the way
try this
i=rs.getInt(1)
j= rs.getInt(2);
Also you are not setting the value for "change_id = ?" in your prepare statement before executing the query
like
pstmt.setLong(1, "value to be set");
pstmt.executeQuery(); -
Use of Prepared Statement in adf
Hi Experts,
I am confused with the Use of prepared statement in adf.
My use case is ,
I have to update a table from every page in my application under certain conditions.
My question is ,
whether I have to create the VO iterator binding in every page and by calling the createinsert and insert the data in to the table or
use a common method in the Application module impl
which is using a prepared statement,(which is not even creating the ViewObject ) like
PreparedStatement st = null;
String sql = "INSERT INTO hr.departments (DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID, LOCATION_ID) VALUES (seq,?,?,?)";
st=getDBTransaction().createPreparedStatement(sql,0);
st.setString(1, name);
st.setString(2, mgr_id);
st.setString(3, Loc_id);
st.execute();
getDBTransaction().commit();which is the best approach?
Studio Edition Version 11.1.1.2.0
RanjithRanjith,
Without further understanding the use case, there's not really much difference between the two approaches. In both cases, you'd have a binding in the page definition (either an iterator binding for the VO or a method binding for the AM service method). Both will use bind variables. The main difference I can see is that, depending on how you have configured your AM pooling settings, the VO method will incur fewer parses in the DB because the AM will cache prepared statements for you.
John -
When to use prepared statement in java?
Hi all,
If we have query like select * from {tablename} (Here tablename is the variable) then will the use of prepared staement improve the performance? My guess is use of statement in this case is a better option rather than prepared statement as the tablename may change for every other query.I think are not useful if tablename changes.They are useful only when the where clause has dynamic values.cantor wrote:
Are you sure that your approach is possible? The next example causes exception for me.
PreparedStatement ps = conn.prepareStatement("select * from ?");
ps.setString(1, "TABLE_NAME");
ps.executeQuery();
I didn't say that he should solve it in that way. He should create one prepared statement like this "select a, b, c from tablename1" and another prepared statement when he wants to execute "select d, e, f from tablename2"
>
And as I understand, this code will not improve perfomance (and even will not work). As I said it can.
Prepared statements make possible usage compiled queries inside DB. When DB gets prepared statement call, it need to parse it only once. And it can collect some statistic to improve execution plan. But when table name is not specified, this approach will not work.Yes it might. There are database drivers that can cache prepared statements and it's isn't likely that he executes that query on more than e.g. 20 tables?
The database can also cache compiled statements in a cache.
Kaj -
How can i use multiple row subquery in update statement
Hai All
I using group function in my update statement.. and i need to update more rows so i need to use multiple row
subquery pls tell me how to use multiple row subquery in update statement
For example
while i am using this like this i got an error
update dail_att set outtime in (select max(r2.ptime) from temp_att where empcode=r2.enpno and
barcode=r2.cardn and attend_date=r2.pdate group by enpno,pdate,cardn);
Pls tell me how to use with example
Thanks & regards
Srikkanth.MHai Man
Thanks for ur response Let me clear what i need
First step Fetch the records as text file and stores into table T1
and the next step is i have seperated the text using substring and stores in different columns of a table
There are two shifts 0815 to 1645 and 1200 and 2000
Here I rep IN and O rep OUT
Empno date time inout
001 01-01-10 0815 I
002 01-01-10 0815 I
003 01-01-10 0818 I
001 01-01-10 1100 0
001 01-01-10 1130 I
002 01-01-10 1145 0
002 01-01-10 1215 I
004 01-01-10 1200 I
005 01-01-10 1215 I
004 01-01-10 1315 O
004 01-01-10 1345 I
001 01-01-10 1645 0
002 01-01-10 1715 0
003 01-01-10 1718 0
004 01-01-10 2010 0
005 01-01-10 2015 0
This is my T1 table i have taken data from text file and stored in this table from this table i need to move data to another table T2
T2 contains like this
Empno Intime Intrin Introut Outtime Date
001 0815 1100 1130 1645 01-01-10
002 0815 1145 1215 1715 01-01-10
003 0818 1718 01-01-10
004 1200 1315 1345 2010 01-01-10
005 1215 2015 01-01-10
This what i am trying to do man but i have little bit problems Pls give some solution with good example
And my coding is
declare
emp_code varchar2(25);
in_time varchar2(25);
out_time varchar2(25);
Cursor P1 is
Select REASON,ECODE,READMODE,EMPD,ENPNO,FILL,PDATE,PTIME,INOUT,CARDN,READERN
From temp_att
group by REASON,ECODE,READMODE,EMPD,ENPNO,FILL,PDATE,PTIME,INOUT,CARDN,READERN
ORDER BY enpno,pdate,ptime;
begin
for r2 in p1 loop
declare
bar_code varchar2(25);
begin
select barcode into bar_code from dail_att where empcode=r2.enpno and attend_date=r2.pdate;
For r3 in (select empcode,empname,barcode,intime,intrin,introut,addin,addout,outtime,attend_date from dail_att)loop
if r2.inout ='O' then
update dail_att set outtime =(select max(r2.ptime) from temp_att where empcode=r2.enpno and barcode=r2.cardn and attend_date=r2.pdate group by r2.cardn,r2.enpno,r2.pdate );
end if;
end loop;
exception
when no_data_found then
if r2.inout ='I' then
insert into dail_att(barcode,empcode,intime,attend_date)(select r2.cardn,r2.enpno,min(r2.ptime),r2.pdate from temp_att group by r2.cardn,r2.enpno,r2.pdate );
end if;
end;
end loop;
commit;
end;
Pls tell me what correction i need to do i the update statement i have used a subquery with group function but when i used it will return only one row but my need is to return many rows and i need to use multiple row subquery
and how can i use it in the update statement
Thanks In Advance
Srikkanth.M -
Does a Database Control use Prepared Statements?
When I add a method to a database control I have to supply the SQL for that method. Under the covers does the database control convert that SQL into a prepared statement? Is this documented anywhere?
Thanks for the help!
RobRob,
it seems not be documented, but the Database Control always uses a PreparedStatement internally.
-Kai -
Problem in inserting to MS Access using prepared statement
I am inserting a record in MS Access db and I am using prepared statement. I am encountering an error.... any help I would really appreciate it. So much time figuring out what the problem is....
ConvertText contxt = new ConvertText();
String bday = (String)cbYear.getSelectedItem() +
cbMonth.getItemCount()+(String)cbDay.getSelectedItem();
try{
// load MySQL driver
Class.forName(driver);
// Setup connection to DBMS
Connection conn = DriverManager.getConnection(url);
// Create statement
Statement stmt = conn.createStatement();
PreparedStatement insertPersons = conn.prepareStatement(
"INSERT INTO PERSONS VALUES(" +
"FIRST_NAME = ?," +
"LAST_NAME = ?," +
"MIDDLE_NAME = ?," +
"NICKNAME = ?," +
"GENDER = ?," +
"MARITALSTATUS = ?," +
"AGE = ?," +
"BIRTHDATE = ?," +
"ADDRESS = ?," +
"RES_PHONE_NUMBER = ?," +
"OFFICE_PHONE_NUMBER = ?," +
"CELL_NUMBER = ?," +
"COMPANY_NAME = ?," +
"EMAIL_ADDRESS = ?," +
"TIMESTAMP = ?)"
insertPersons.setString (1, tfFirstName.getText());
insertPersons.setString (2, tfLastName.getText());
insertPersons.setString (3, tfMiddleName.getText());
insertPersons.setString (4, tfNickName.getText());
insertPersons.setString (5, (String)cbGender.getSelectedItem());
insertPersons.setString (6, (String)cbMaritalStatus.getSelectedItem());
insertPersons.setInt (7, contxt.formatStringToInt(tfAge.getText()));
insertPersons.setDate (8, contxt.formatStringToSQLDate(bday));
insertPersons.setString (9, tfAddress.getText());
insertPersons.setString (10,tfResPhoneNumber.getText());
insertPersons.setString (11,tfOffPhoneNumber.getText());
insertPersons.setString (12,tfCellNumber.getText());
insertPersons.setString (13,tfCompanyName.getText());
insertPersons.setString (14,tfEmailAddress.getText());
insertPersons.setTimestamp(15, new Timestamp(System.currentTimeMillis()));
insertPersons.executeUpdate();
conn.close();
JOptionPane.showMessageDialog(null,"Record Inserted!", "INSERT",
JOptionPane.INFORMATION_MESSAGE);
}catch (SQLException ex){
System.err.println("==> SQLException: ");
System.out.println("Message: SQL Exception");
System.out.println("Message: " + ex.getMessage ());
System.out.println("SQLState: " + ex.getSQLState ());
System.out.println("ErrorCode: " + ex.getErrorCode ());
JOptionPane.showMessageDialog(null, ex.getMessage() + ex.toString(),"Error", JOptionPane.INFORMATION_MESSAGE);
}catch(Exception ex){
} ERROR Displayed:
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 30. java.sql.SQLExceptionHi cruzdhel,
Your SQL looks incorrect to me.
I am not familiar with that syntax.
I think it should be like this:
PreparedStatement insertPersons =
conn.prepareStatement("INSERT INTO PERSONS (FIRST_NAME," +
"LAST_NAME," +
"MIDDLE_NAME," +
"NICKNAME," +
"GENDER," +
"MARITALSTATUS," +
"AGE," +
"BIRTHDATE," +
"ADDRESS," +
"RES_PHONE_NUMBER," +
"OFFICE_PHONE_NUMBER," +
"CELL_NUMBER," +
"COMPANY_NAME," +
"EMAIL_ADDRESS," +
"TIMESTAMP)" +
"values (?," +
"?," +
"?," +
"?," +
"?," +
"?," +
"?," +
"?," +
"?," +
"?," +
"?," +
"?," +
"?," +
"?," +
"?)");Hope this helps.
Good Luck,
Avi. -
How to use prepared statement - For Everyone Help
public String count()
int count = 0;
String fetchsize = "";
try
Connection conn = getOADBTransaction().getJdbcConnection();
Statement statement = conn.createStatement();
String Query = "select count(*) count from fnd_lookups where lookup_type like 'SAPE_BILL_TO_SHIP_TO_UPDATE'";
ResultSet resultset = statement.executeQuery(Query);
while (resultset.next())
count = (int)resultset.getInt("count");
fetchsize = ""+count;
catch(Exception e)
return fetchsize;
}Hi,
we can use prepare statement in Co....
import java.sql.PreparedStatement;
import java.sql.ResultSet;
try
PreparedStatement prpdStmt1 = am.getOADBTransaction().getJdbcConnection().prepareStatement("select full_name from per_all_people_f where person_id='"+empid+"' ");
ResultSet rs=prpdStmt1.executeQuery(); //Cursor fetch row
while(rs.next())
empname=rs.getString(1);
catch(Exception e)
System.out.println("Exception is"+e.getMessage());
t1.setValue(pageContext,empname);
Thanks
nani -
Advantages of using prepared statement..... ?
can anyone please tell me that what r the advantages of using prepared statements.
for eg in case if statement object is executed inside a for loop where query is executed multiple times the sql query is compiled outside loop and therefore compilation is done only once. which makes sense
But if there the query is not executed multiple times then what is the real benifit of using prepared statement . because the statement object will be closed after executing the query.
and a new statement object will be created when other user access the same code.
please clearify my doubts
thanks
PankajOther advantages of using PreparedStatement:
1. It's easier to create SQL that looks like "Select This, That, TheOther from Something where ID=? and Usage=?" than to try to generate that with string concatenations.
2. You don't have to deal with escaping quote characters that happen to appear in strings you want to insert in your database.
3. PreparedStatements can do some things that Statement can't, such as updating very large text columns. -
? in SQL Queries and not using prepared statements
Using EclipseLink 1.1.1
Prepared Statements are disabled
In our production server something went wrong and one of our Read Queries started erroring. A DatabaseException was thrown and we log the "getQuery.getSQLString()" statement. We found this query in the logs:
SELECT t1.ID, t1.NAME, t1.DESCRIPTION, t1.EXTREFID, t1.STYLESHEET, t1.DDSVNVERSION, t1.FIRSTNAME, t1.LASTNAME, t1.EMAILADDR, t1.PHONENUMBER, t1.ADDRESS, t1.ADDRESS2, t1.CITY, t1.STATE, t1.POSTALCODE, t1.COUNTRY, t1.ADMINACCTNAME, t1.HASDOCUMENTS, t1.HASTIMEDNOTIFICATIONS, t1.STATUS, t1.ENTRYDATE, t1.EVALEXPDATE, t1.LASTREMINDDATE, t1.FULLUSERS, t1.LIMUSERS, t1.REQUSERS, t1.ISENTERPRISE, t1.EXPDATE, t1.ISDISABLED, t1.DISABLEDDATE, t1.NEEDLICENSEAGREEMENT, t1.ISWARNINGDISABLED, t1.LOCALE, t1.TIMEZONE, t1.CURRENCY, t1.DOMAIN, t1.DOCUMENTSIZE, t1.EXTRADOCUMENTSTORAGE, t1.ONDEMANDOPTIONS, t1.SSOTYPE, t1.RESELLERID, t1.ACCOUNTREPID, t1.LASTUSAGEREPORTDATE, t1.NEXTUSAGEREPORTDATE, t1.USAGEREPORTATTEMPTS FROM T_SSOOPTIONS t0, T_CUSTOMERS t1 WHERE *((((t0.SSOENABLED = ?) AND (t1.SSOTYPE IN (?, ?))) AND (UPPER(t1.DOMAIN) = ?)) AND (t0.CUSTOMERID = t1.ID))*
Notice the values weren't entered into the where clause. We had to bounce the application to fix the problem. I've never seen this before. I've added more debugging statements to the code - so if this happens again in the future I'll have more information to report on. In the mean time I'm wondering if anyone else has every seen a problem of this nature.Database error due to invalid SQL statement.
I don't have a stack, we were catching the exception and not printing the stack :(
Like I mentioned in my first post, I added more debugging code (e.printStackTrace()). I understand this is hard to track down without more information. I was just hoping you guys had seen something like this before and had any insight. Like I mentioned before: this is on our production server. I've never seen this type of error before. That particular server (we run in a cluster mode) had been up for several days and then started generating that error. IT bounced the node and everything went back to normal. We have been using toplink for about 5 years now and have never seen this problem, until August 3rd 2009. The only thing that has changed recently is our migration from toplink 10 to EclipseLink. I was wondering if anyone knows if anything had changed in EclipseLink/toplink 11 with the generation of SQL queries.
I'll keep looking. There is more debugging code in there now. Since the error was "Database error due to invalid SQL statement" this implies the SQL was generated, exited that part of the code and was sent to the db where it failed. I'm afraid the printStackTrace won't help if this error happens again.
Maybe you are looking for
-
What does the question mark mean in the states bar of ALL MY FILES window and how do I rectify the situation? When I click the question mark I get the message "Item can not be found"
-
Hi All, I have a requirement where i need to display Large Font size in Smartform. I am able to display the same for the PRINTER in print preview. But when i print the smartform, the font is printed in very small size. I think it is because the print
-
Help with displaying an object from one class to a text box in another
Hi everyone, Just a quick question I have a public class called Order which is in a processing folder; within this class I have a method which gets a sold basket (which is just a list of items sold) and adds it to another array list; public synchroni
-
Windows XP so today i turn on my ipod and disk mode came on, i thought oh out of battery so i charged it. it is still on disk mode how do i get this off?
-
How to use TopLink's mapping info at runtime
Can anybody kindly instruct how to do the following: 1) Once the "JavaSource.java" file or the "ProjectDeployment.xml" file is generated by TopLink from a TopLink project, how can it be included and used in a J2EE project at runtime? I understand tha