Using Date objects in SQL statements
Hi, I am wondering if it is possible to use Date objects while trying to retrieve entries from an access database with fields set as "Date/Time" fields, as opposed to "Text"? If so, do I need to reformat it before inserting it into the SQL statement, or can I just leave it as a Date object, and call up the variable name?
For example - "SELECT * FROM database WHERE startDate = ' " + dateObject + ' ". And do i need quotes round this value?
Thanks in advance.
I had some problems by just fetching a date and pushing it back to a MS SQL Database.
I used the following reformating step to fix it:
if (o instanceof Timestamp)
String time = o.toString().substring(8,10)+"."+o.toString().substring(5,7)+"."+o.toString().substring(0,4)+" "+o.toString().substring(11,19);
ht.put(columnName, time);
o is the object i receve from the select statement and ht is a Hashtable where i put my data.
To write the data back i now can use:
UPDATE table SET columnname = 'valueOfColumn'
This means i use the value i created above in Quotes to write it back.
Format of Timestamp.toString() is something like yyyy-mm-dd hh:mm:ss.xx
Format used by MS SQL (and i think by Access to) 'dd.mm.yyyy hh:mm:ss'
Similar Messages
-
Date formats for SQL statements used by recordset object
Hi,
Date formatting appears to be quite problematic for Business One. I did a forum search for date issues and I don't think I saw any of them with an "answered" status. I have an issue with formatting a date for the creation of an SQL statement that the DI sends to SQL Server 2005. I need to format a date so that the localization parameters don't matter for either the client machine or SQL Server's machine. We don't have a problem as long as our machines are localized as USA.
I have PL 22 and I have a form - ours - where I use the Today() function to fill a date field. So this is a date that is not entered by the user. The result of this function is consistent with the localization parameters on my machine. We have two other date fields on the form where the user must type in the date.
As a test, I changed my machine to the UK parameters. I then set up the language parameters of Business One for English(United Kingdom). I changed the date format specifications in Business One so that its format is dd/mm/yy. I then brought up the form and the field that is formatted by the above function arrived in the form's field as dd/mm/yy. I then typed in the two other dates in the same format and added the record to the database. The form's table is user-defined.
I dismissed the form then brought it back up loaded with the new record. The date that was entered by the function appeared in USA format (mm/dd/yy). The dates that were typed in appeared in the Business One format (dd/mm/yy). This of course is not consistent.
When I looked at what got into the database, the formats were the opposite. Weird! To make matters really confusing, I run an SQL statement within SQL Server Mgt Studio, and use the WHERE clause to filter on the date that was based on the function. It didnt matter what format I used for the WHERE clause, the record came up. Does anyone have any idea about how I can ensure that I always use the correct date format for SQL statements passed by Business One to SQL Server regardless of where in the world the application is being run?
Thanks,
MikeIan,
Here's what I'm concerned about: Im using the date in a WHERE clause.
Assume the date is Aug 3, 2007.
"SELECT * FROM Table WHERE StartDate > 8/3/2007"
OR
"SELECT * FROM Table WHERE StartDate > 3/8/2007"
If the client machine is set up as USA, the today function will provide the date as formatted in the first query. If the database server is setup as lets say the UK, I believe that SQL Server query parser will interpret the date as Mar 8, 2007.
If the client machine is set up as UK, the today function will provide the date as formatted in the second query. If the database server is setup as lets say USA, I believe that SQL Server query parser will also interpret the date as Mar 8, 2007.
In both cases it would be wrong.
I know I could use the DATEPART function to get the three parts and this will make the code indifferent to the localization specs of the client machine. I need to then be able to concatenate those date parts for the WHERE clause so that the localization specifications of the database server dont matter.
Thanks,
Mike -
Date objects and prepared statements
Hi, I am trying to parse a String into a Date object with format "dd/MM/yyyy hh/mm/ss". Anyway, i have a method in a separate class which reads in a String and converts it to a formatted Date object.
static public Date convertToDate(String t) throws ParseException {
Date dd = new Date();
ParsePosition p = new ParsePosition(0);
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
//y, M, etc are retrieved as substrings of String t. I know these methods are deprecated as well
dd.setYear(y);
dd.setMonth(M);
dd.setDate(d);
dd.setHours(h);
dd.setMinutes(m);
dd.setSeconds(s);
String formattedDate = formatter.format(dd);
Date theDate = formatter.parse(formattedDate);
return theDate;
Anyway, I am trying to use this in an SQL statement because I am using an Access DB which has a field of Date/Time value. Is this correct to use a Date object then? I have a prepared statement -
PreparedStatement query = connection.prepareStatement(
"SELECT FText FROM wnioutput WHERE Id = ? AND Section = ? AND Start = " +
"? AND Field = ?");
//start is the Date object returned from the previous method in a separate class
query.setInt(1, id);
query.setInt(2, section);
query.setDate(3, formattedStart); - with this part, i get a setDate method not found, or something
query.setString(4, ch);
Can anybody tell me what the problem is? I know there are Date objects of java.util and java.sql. Should i be using an sql Date object? And if so, how, and where do I do this? Thank you!ok, i just tried
query.setTimestamp(3, new java.sql.Timestamp(formattedStart.getTime()));
where formattedStart is a java.util.Date object
and I get the following error message -
Error occured in getting endDateAndTime: java.sql.SQLException: Exception in databaseDisplay: the error message is:java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
java.lang.NullPointerException
where endDateAndTime is
// takes in the startDateAndTime as a formatted String (before it is converted into a Date object)
public String getEndTime(int s, int ID, String stDateAndTime) {
String end = null;
gui g = new gui();
try {
String sql = "SELECT End FROM wnioutput WHERE Id = " + ID +
" AND Section = " + s +
" AND Start = '" + stDateAndTime + "' AND Field = 'Wind50m'";
ResultSet result = g.queryDatabase(sql);
if (result.next())
end = result.getString("End");
} catch (SQLException sqlex) {
System.out.println("Error occured in getting endDateAndTime: " + sqlex.toString());
return end;
Although this method worked fine before. So the error is in setting the date object in the prepared statement. Anymore suggestions?? -
Hi there !
Please, can anyone help me find out what is going on with date format in my SQL Statements ?
While in development, the date format in SQL statements were:
SELECT DATA_FIELD FROM TABLE WHERE DATE_COL = '10-DEC-2004'
And works fine.
After deploy to production server, we get ORACLE error: not a valid month
So we change the format to
SELECT DATA_FIELD FROM TABLE WHERE DATE_COL = '10/12/2004'
And it gets to works again.
Yesterday, the net administrator updated the JAVAC / JSDK run-time with Java update tool, and AGAIN we get ORACLE error: not a valid month
So we change the format AGAIN to
SELECT DATA_FIELD FROM TABLE WHERE DATE_COL = '10-DEZ-2004'
And it gets to works again.
What is going on ?
JAVAC running on Windows2003.
The application access the ORACLE DB directly through JDBC.
There is no APPLICATION SERVER, like TOMCAT.
The regedit (windows registry) ALWAYS was and are now :
NLS_DATE_FORMAT = DD-MON-YYYY
NLS_LANG = AMERICAN_AMERICA.WE8ISO8859P1
Versions:
DB Oracle 9.2.0.5.0
JavaC 1.4.2.05
Thanks.
JulianoSomewhere, I'm willing to wager your NLS_DATE_FORMAT was/ is being changed. This is a client-side setting. Are you sure that the setting is the same on every client machine.
This is one of the reasons that it is considered bad form to rely on implicit conversion. If you wrap your string literal in a TO_DATE, use the JDBC escape sequence {d }, or use a Date bind variable, you don't have this problem. The bind variable approach will also play much more nicely with your database's shared pool.
Justin
Distributed Database Consulting, Inc.
http://www.ddbcinc.com/askDDBC -
Error using Data Miner on SQL Developer
Dear all.
I'm trying to use Data Miner on SQL Developer (3.1.06) with Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 -
64bit Production, with the Partitioning, OLAP, Data Mining and Real Application Testing options.
I created a project, a workflow, a data source, a classification model and connected them.
I tried to show the Decision Tree generated as described in the tutorial "Using Oracle Data Miner 11g Release 2".
But, I receive the message "It's not possible to load the data mining model because it does not exist" in a dialog box entitled "Model not found".
It seems that something was missing either during installation or granting my user.
Does anybody have seen this message and know what causes it?
Any other suggestion is welcome.
Regards,
Duncan
PUCRS-BrazilHi Mark.
Thank you on replying my post.
I'm not the DBA of Oracle repository here. So, if possible, I'd like to address my issue without having to do anything in it.
I'll try to state better what we have here.
When I try to use latest SQL Developer version, 11.2.1.1.7.42, it got me a message stating current repository isn't compatible with this SQLDev version
Repository version is: 11.2.1.1.3
I don't know what type of upgrade SQL Developer wants to do...
About your other questions.
"Is the model not found error occurring for all models or just the DT model?" -- The error occurs for all 4 standard models: SVM, GLM, NB and DT. But, I'm able to see all other options: "show tests results", "Compare tests results".
You did not report that the workflow failed, so you must be seeing a successful completion status for each of the nodes. -- Yes, all steps are executed and finished OK.
Are you using a proxy user or some other connection definition other than a standard connection. -- No.
There is currently some problems supporting proxy based connections that will be fixed in a upcoming SQL Developer release.
So, if you can provide me some details on how your connection is defined, that will be helpful.
How was the product installed and the user granted rights? -- I need to ask PUCRS DBA team to answer these questions.
Was it done through the UI or by running the scripts in the dataminer/scripts directory?
Lastly, what is your client operating system and are you using the SQL Dev 64 bit or 32 bit release? -- I tested in 2 different computers, both with Windows 7 Professional. In my notebook, it's 64 bits OS version.
Thank you for your attention and kind reply.
Regards,
Duncan -
Using Collection in a sql statement.
Hi I want to perform the following statement:
DELETE FROM ALLOCATION_ELEC_MATRIX
WHERE dgo_ean_id in (lt_inter_dgos);
The collection lt_inter_dgos holds my dgo_ean_id's(varchars).
I can't find a way to get it to work.
The collection is declared as follows:
TYPE Interface_param_dgos IS TABLE OF VARCHAR2(20);
lt_inter_dgos Interface_param_dgos := Interface_param_dgos();
then later on the collection gets filled. But how can i get it to work to use it in my sql statement?
I don't won't to use a for loop around it since it would give me problems if I use more collections with a different amount of values in it.The standard approach is to use SQL collection type and table function,
for example
SQL> create TYPE Interface_param_dgos IS TABLE OF VARCHAR2(20);
2 /
Type created.
SQL> create or replace package my_pkg
2 is
3 lt_inter_dgos Interface_param_dgos := Interface_param_dgos();
4 function get_coll return Interface_param_dgos;
5 end;
6 /
Package created.
SQL> create or replace package body my_pkg
2 is
3 function get_coll return Interface_param_dgos
4 is
5 begin
6 return lt_inter_dgos;
7 end;
8 end;
9 /
Package body created.
SQL> begin
2 my_pkg.lt_inter_dgos.extend(3);
3 my_pkg.lt_inter_dgos(1) := 'SMITH';
4 my_pkg.lt_inter_dgos(2) := 'KING';
5 my_pkg.lt_inter_dgos(3) := 'ALLEN';
6 end;
7 /
PL/SQL procedure successfully completed.
SQL> select ename from emp;
ENAME
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
14 rows selected.
SQL> delete from emp where ename in (select column_value from table(my_pkg.get_coll));
3 rows deleted.
SQL> select ename from emp;
ENAME
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
TURNER
ADAMS
JAMES
FORD
MILLER
11 rows selected.Rgds. -
Using Date objects in PDV tables
Hi,
Using SAP EP 6.0, SP9 and MSS 6.1.3, we're having at bit of trouble using other object types than String i PDV tables. The Java syntax allows for specifying other types by means of
table.getColumn( "colName" ).setDataType( DataType.DATE );
But nothing shows in the table; the cells are just left blank.
Has anyone succeeded in specifying the data type?
Thanks in advance,
RasmusI had some problems by just fetching a date and pushing it back to a MS SQL Database.
I used the following reformating step to fix it:
if (o instanceof Timestamp)
String time = o.toString().substring(8,10)+"."+o.toString().substring(5,7)+"."+o.toString().substring(0,4)+" "+o.toString().substring(11,19);
ht.put(columnName, time);
o is the object i receve from the select statement and ht is a Hashtable where i put my data.
To write the data back i now can use:
UPDATE table SET columnname = 'valueOfColumn'
This means i use the value i created above in Quotes to write it back.
Format of Timestamp.toString() is something like yyyy-mm-dd hh:mm:ss.xx
Format used by MS SQL (and i think by Access to) 'dd.mm.yyyy hh:mm:ss' -
NDS : how to use a ' in the sql statement ?
Hi folks,
I would like to use a sql statement which includes single quotes "'" into my NDS statement.
Since I have to put my statement into a varchar within single qutes I have to
mark the internal quotes as quotes which have to be in my varchar buit don't effect the quoting of the whole varchar.
How can I do that ?
Best regards,
DanielI got it. In order to distinguish between data single quote and varchar sigle quote, you need to use 2 single-quotes instead of one in DATA.
Like this.
SQL>
SQL> drop table table1;
Table dropped.
SQL>
SQL> create table table1(col1 varchar2(20));
Table created.
SQL>
SQL> insert into table1 values('Sarma''s');
1 row created.
SQL>
SQL> commit
2 /
Commit complete.
SQL> select * from table1
2 /
COL1
Sarma's
SQL> Cheers
Sarma. -
Compute Date Range with SQL Statement
I'm sure there is a way to do this in SQL, but I cannot figure it out. I can write a PL/SQL script to do it, but would prefer using a SQL Statement. My database is Oracle Database 10.2.0.4.0.
I have a table that contains information such as the employee number, department id, and the effective date of when the person started in that department. There is data in another table that I want to update their department number in based on their effective date range. If I could figure out how to select the effective date range correctly, I can do the rest.
I have data such as:
EMP_ID DEPT_NO EFFECTIVE
101 1000 1/15/2001
101 1050 5/24/2005
101 2010 6/8/2008
101 1000 8/2/2010
I want to write a SELECT statement that returns something like this where the END_DATE is the day before the EFFECTIVE date and the last record does not have an END_DATE because they are still assigned to that department. Also, the first record in the column, I don't want to select a DEPT_NO because the effective date logic was added in January 2001 so if a person started back in 1985 they could have switched departments zero to many times so I'm not going to update any data for that period:
EMP_ID DEPT_NO EFFECTIVE END_DATE
101 1/14/2001
101 1000 1/15/2001 5/23/2005
101 1050 5/24/2005 6/7/2008
101 2010 6/8/2008 8/1/2010
101 1000 8/2/2010
Below is a script to create the data in a temp table that can be used to write a SELECT statement on. I have added two employee records with different dates.
create table temp_activity
(emp_id number(12),
dept_no number(12),
effective date);
INSERT INTO temp_activity
(EMP_ID,DEPT_NO,EFFECTIVE)
VALUES
(101,1000,to_date('1/15/2001','MM/DD/YYYY'))
INSERT INTO temp_activity
(EMP_ID,DEPT_NO,EFFECTIVE)
VALUES
(101,1050,to_date('5/24/2005','MM/DD/YYYY'))
INSERT INTO temp_activity
(EMP_ID,DEPT_NO,EFFECTIVE)
VALUES
(101,2010,to_date('6/8/2008','MM/DD/YYYY'))
INSERT INTO temp_activity
(EMP_ID,DEPT_NO,EFFECTIVE)
VALUES
(101,1000,to_date('8/2/2010','MM/DD/YYYY'))
INSERT INTO temp_activity
(EMP_ID,DEPT_NO,EFFECTIVE)
VALUES
(102,1040,to_date('1/15/2001','MM/DD/YYYY'))
INSERT INTO temp_activity
(EMP_ID,DEPT_NO,EFFECTIVE)
VALUES
(102,2000,to_date('6/16/2006','MM/DD/YYYY'))
Any help is appreciated. This is probably easy, but I cannot get my brain wrapped around it.
Thanks - mikeselect emp_id,
dept_no,
effective,
end_date
from (
select emp_id,
dept_no,
effective,
lead(effective) over(partition by emp_id order by effective) - 1 end_date,
row_number() over(partition by emp_id order by effective) rn
from temp_activity
union all
select emp_id,
null dept_no,
null effective,
min(effective) - 1 end_date,
0 rn
from temp_activity
group by emp_id
order by emp_id,
rn
EMP_ID DEPT_NO EFFECTIVE END_DATE
101 01/14/2001
101 1000 01/15/2001 05/23/2005
101 1050 05/24/2005 06/07/2008
101 2010 06/08/2008 08/01/2010
101 1000 08/02/2010
102 01/14/2001
102 1040 01/15/2001 06/15/2006
102 2000 06/16/2006
8 rows selected.
SQL> SY. -
Popluating Unique data with a SQL Statement
I have a table with millions of rows.Now i have to populate the
data from that table into another table with the same
structure,but with primary key defined on two columns. In the
process of populating,data loss should not take place.
How can this be achieved with a single SQL statement without
effectin performance?
Thanx in advance ...If you are sure that there a no violations of the new primary
key, then something like
INSERT INTO new nologging
SELECT * from old
will work. If you think there may be violations of the new
primary key, then disable the primary key before doing the
insert. After the insert completes
ALTER table new
ENABLE CONSTRAINT pk
EXCEPTIONS INTO exptable
You will need to use utlexcpt.sql to create the exceptions table.
The primary key will not enable, but the exceptions table will
hold rowids of the rows that violate the key. You can use this
to fix them. -
Can we use if/else in sql statement?
Hi,
Is it possible to write a sql statement like the one below (not plsql)?
if (select 'True' from dual) = 'True' -- 1
then
select 'True' from dual; -- 2
else
select 'False' from dual; -- 3
endBasically, I want to execute either sql 2 or 3 based on the result of sql 1. I'm not sure if this is possible using only sql and not having to write a stored proc.
What are the different ways I can implement this?
Thanks for the help.Billy Verreynne wrote:
The case syntax is a bit funny though as there's not a single condition evaluation (like a DECODE or case structs from some other languages).
This is what I would expect a typical case struct to look like - evaluating a single condition:
case <condition>
when <value-1> then return <result-1>
when <value-n> then return <result-n>
else
return <return-z>
end
?:| You mean like this...?
SQL> ed
Wrote file afiedt.buf
1 select empno, ename, deptno
2 ,case deptno
3 when 10 then 'This is Department 10'
4 when 20 then 'And department 20'
5 when 30 then 'And of course department 30'
6 else
7 'Blimey it is something else!'
8 end as dept_desc
9* from emp
SQL> /
EMPNO ENAME DEPTNO DEPT_DESC
7369 SMITH 20 And department 20
7499 ALLEN 30 And of course department 30
7521 WARD 30 And of course department 30
7566 JONES 20 And department 20
7654 MARTIN 30 And of course department 30
7698 BLAKE 30 And of course department 30
7782 CLARK 10 This is Department 10
7788 SCOTT 20 And department 20
7839 KING 10 This is Department 10
7844 TURNER 30 And of course department 30
7876 ADAMS 20 And department 20
7900 JAMES 30 And of course department 30
7902 FORD 20 And department 20
7934 MILLER 10 This is Department 10
14 rows selected. -
Using cursor function in sql statement
hi all
can anyone plss explain why and when we will use cursor function in a sql statement like this and what is the difference while executing this sql statement with cursor function in comparison of a simple sql statement----
select
department_name,
cursor (
select last_name
from employees e
where e.department_id = d.department_id
order by last_name
) the_employees
from departments d
thnx in advanceRTFM
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/sqloperations.htm#sthref1452
Cheers
Sarma. -
Using 1 = 1 in SQL Statements
I have just been told by our DBA that we have to go through
our code and remove the "WHERE 1 = 1" in our SQL statements on a
SQL 2000 database. He said it is a performance issue when nothing
else follows it (no AND's).
For example (the wrong way):
SELECT this_ID FROM thistable WHERE 1 = 1
Versus...
SELECT this_ID FROM thistable WHERE 1 = 1 AND this_ID = 1001
He said Microsoft said that this is causing a performance hit
when there is no AND clauses after the WHERE.
Some of these SQL statements are pretty big and there is no
practical way to do a CFIF beforehand.
Has anyone heard of a performance hit like this? If so, how
much of a hit? The main table in the DB has about 2 million records
with full text indexes.
Thanks,
Rob in TampaPhil,
Thanks for the speedy response. I forgot to mention.. there
are TOP 200 clauses in all the big SQL statements.
And, like I said before... some of the queries are too big to
test to see if at least 1 of the condidtions exsist. More often
than not, the WHERE 1 = 1 clause will not be alone. I personally
think it is a pet peeve of the DBA where he doesn't see any use of
the 1 = 1. He said.. it's always going to be true. Kinda the point
of having it.
This was taught to me years ago.. but, this is the biggest
application I have worked on where SQL performance could be an
issue. It was mentioned that the hit comes when SQL Server is
building its execution plan and has to include the WHERE 1 = 1
clause. How much of a hit can it cause? Most of the empty clauses
with no AND's are most likely in a JOIN clause or something.
The WHERE placeholder is in almost all of our queries in one
way or another. Not a small project.
Thanks,
Rob -
Using Variables in a SQL Statement
I know, I know, this is written in VB..I'm doing a VB Project right now for my Instructor (While in an Intermediate Java Class)
But VB (I feel) doesnt have very good support Forums.
Anyway, this is the problem:
I want to use String Variables to hold the place of field names in
a SQL Statement and the change the ORDER according to intCount's Loop:
The key word(s) here is "ORDER BY"
Private Sub DataGrid1_Click()
Dim intCount As Integer
Dim strColHead(11) As String
strColHead(0) = "RES__PUR_DT"
strColHead(1) = "VENDOR"
strColHead(2) = "VEN_LOC"
strColHead(3) = "RES_TYPE"
strColHead(4) = "RES_FROM_DT"
strColHead(5) = "RES_TO_DT"
strColHead(6) = "MISC_ADJ"
strColHead(7) = "STATE_TAX"
strColHead(8) = "LOC_CHARGE"
strColHead(9) = "RES_ID"
strColHead(10) = "RES_OP"
For intCount = 0 To 10
If DataGrid1.SelStartCol = intCount Then
Adodc1.RecordSource = "Select * from tblReservation order by 'strColHead(intCount)'"
End If
Adodc1.Refresh
Next intCount
End SubI'm just wondering if anyone knows a work around so that I might be able to store a Table's FIELD name in a variable or an array[] so that I can do a query based on the decision of a loop without having to code 10 IF/ELSE statements.For instance, although the above code will not work, this code, although quite lengthy, does:
If DataGrid1.SelStartCol = 0 Then
Adodc1.RecordSource = "Select * from tblReservation order by RES__PUR_DT"
Adodc1.Refresh
ElseIf DataGrid1.SelStartCol = 1 Then
Adodc1.RecordSource = "Select * from tblReservation order by VENDOR"
Adodc1.Refresh
ElseIf DataGrid1.SelStartCol = 2 Then
Adodc1.RecordSource = "Select * from tblReservation order by VEN_LOC"
Adodc1.Refresh
ElseIf DataGrid1.SelStartCol = 3 Then
Adodc1.RecordSource = "Select * from tblReservation order by RES_TYPE"
Adodc1.Refresh
ElseIf DataGrid1.SelStartCol = 4 Then
Adodc1.RecordSource = "Select * from tblReservation order by RES_FROM_DT"
Adodc1.Refresh
ElseIf DataGrid1.SelStartCol = 5 Then
Adodc1.RecordSource = "Select * from tblReservation order by RES_TO_DT"
Adodc1.Refresh
ElseIf DataGrid1.SelStartCol = 6 Then
Adodc1.RecordSource = "Select * from tblReservation order by MISC_ADJ"
Adodc1.Refresh
ElseIf DataGrid1.SelStartCol = 7 Then
Adodc1.RecordSource = "Select * from tblReservation order by STATE_TAX"
Adodc1.Refresh
ElseIf DataGrid1.SelStartCol = 8 Then
Adodc1.RecordSource = "Select * from tblReservation order by LOC_CHARGE"
Adodc1.Refresh
ElseIf DataGrid1.SelStartCol = 9 Then
Adodc1.RecordSource = "Select * from tblReservation order by RES_ID"
Adodc1.Refresh
ElseIf DataGrid1.SelStartCol = 10 Then
Adodc1.RecordSource = "Select * from tblReservation order by RES_OP"
Adodc1.Refresh
End If
Do you see where i'm going with this?
I simple want to use a variable in the "select * from <Table> Order by <Field>" -
Using bind variables with sql statements
We connect from a VB 6.0 program via OO4O to an Oracle 8.1.7 database, using bind variables in connection with select statements. Running ok, but performance again by using bind vars not as good as expected!
When looking into the table v$sqlarea, we were able to detect the reason. We expected that our program submits the sql statement with bind vars, Oracle parses this once, and with each select statement again, we do not have a reparse. But: It seems that with each new session Oracle reparses the sql statement, that is, Oracle is not able to memorize or cache bind vars and statements. Even more worrying, this kind of behaviour was visible with each new dynaset, but the same database/session.
Is there anybody our there with an idea of what is happening here?
Code snippet:
Dim OraSession As OracleInProcServer.OraSessionClass
Dim OraDatabase As OracleInProcServer.OraDatabase
Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.OpenDatabase(my database", "my connect", 0&)
OraDatabase.Parameters.Add "my_bind", 0, ORAPARM_INPUT
OraDatabase.Parameters("my_bind").DynasetOption = ORADYN_NOCACHE
OraDatabase.Parameters("my_bind").serverType = ORATYPE_NUMBER ' Bind Var Type
Dim RS As OracleInProcServer.OraDynaset
strSQLstatement= "Select * from my_table where igz= [my_bind] "
Set RS = OraDatabase.CreateDynaset(strSQLstatement, &H4)
OraDatabase.Parameters("my_bind").Value = myValue
RS.Refresh
Cheers and thanks a lot :)
Michael SonntagWe connect from a VB 6.0 program via OO4O to an Oracle 8.1.7 database, using bind variables in connection with select statements. Running ok, but performance again by using bind vars not as good as expected!
When looking into the table v$sqlarea, we were able to detect the reason. We expected that our program submits the sql statement with bind vars, Oracle parses this once, and with each select statement again, we do not have a reparse. But: It seems that with each new session Oracle reparses the sql statement, that is, Oracle is not able to memorize or cache bind vars and statements. Even more worrying, this kind of behaviour was visible with each new dynaset, but the same database/session.
Is there anybody our there with an idea of what is happening here?
Code snippet:
Dim OraSession As OracleInProcServer.OraSessionClass
Dim OraDatabase As OracleInProcServer.OraDatabase
Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.OpenDatabase(my database", "my connect", 0&)
OraDatabase.Parameters.Add "my_bind", 0, ORAPARM_INPUT
OraDatabase.Parameters("my_bind").DynasetOption = ORADYN_NOCACHE
OraDatabase.Parameters("my_bind").serverType = ORATYPE_NUMBER ' Bind Var Type
Dim RS As OracleInProcServer.OraDynaset
strSQLstatement= "Select * from my_table where igz= [my_bind] "
Set RS = OraDatabase.CreateDynaset(strSQLstatement, &H4)
OraDatabase.Parameters("my_bind").Value = myValue
RS.Refresh
Cheers and thanks a lot :)
Michael Sonntag
Maybe you are looking for
-
Issue in bringing up CRS on ATG 10.1.1 with MySQL and Weblogic 10.3
Hello, I am trying to bring up Commerce Reference Store as part of my evaluation using MySQL (bundled with ATG) and WebLogic 10.3. I followed the ATG Documentation on CRS with WebLogic and MySQL and I could not proceed because of the below error log.
-
How do I eject a dvd stuck in the drive? It does not appear on desktop.
-
Writind Data to XML in XML Format
Hi, This is my First post in Sun Forums. I m learning XML writing in Java. I have searched on the Net but unable to find the proper XML writing Method using any API. Please provide code for writing the XML in correct format with useful API.? i m givi
-
Connect 2 Macs w/ Firewire. Not Target disk mode.
I have a PowerBook and an early 09 iMac 24". I used to connected them via firewire to transfer files. Suddenly... the iMac won't recognize the PowerBook... but the Powerbook will recognize the iMac. Actually, the iMac does recognize the PB, but only
-
HI, MY NAME IS JOE AND I HAVE BEEN TRYING TO GET MY IPOD TO WORK FOR ABOUT A MONTH KNOW. MY OLD IPOD STARTED MESSING UP, SO I SENT A NEW ONE IN AND APPLE SENT ME A BRAND NEW BLACK 2GB IPOD. IT IS HAVING THE SAME PROBLEM AS THE OTHER IPOD HAD. WHEN I