Problem with Prepared Statement & MS Access
Hi
I have tried to find some info about this but can't see anything specific to what I think the problem may be. Hopefully someone can point me in the right direction.I am trying to get information out of an MS Access database using a Prepared Statement but I am getting strange results.
When I run the query in the database it gives me the correct totals (�51) for 4 records. When I run the Prepared Statement ,I get 81. Has it got anything to do with the data type I am using( sorry if this is a really basic question). here is my code- the connection etc is elsewhere.
private void getReportMoneyTotal() throws SQLException
Calendar todayTotal =Calendar.getInstance() ;
SimpleDateFormat reportDateFormat = new SimpleDateFormat("dd MM yyyy");
PreparedStatement preparedT =context.getConnection().prepareStatement(
"SELECT Sum(tblSession.Fee) AS Total, Count(tblBooking.BookingID) AS CountOfBookingID FROM tblSession INNER JOIN "+
"(tblBooking INNER JOIN tblCustomer_Booking ON tblBooking.BookingID = tblCustomer_Booking.BookingID) ON tblSession.SessionID = tblBooking.SessionID "+
"WHERE (((tblBooking.EventDate)>DateAdd('m',-1,#"+reportDateFormat.format(todayTotal.getTime())+"#)) AND ((tblSession.Session)='Morning' Or (tblSession.Session)='Evening')) OR (((tblSession.Session)='Afternoon') AND ((tblBooking.Extension)=Yes))"
ResultSet resultTotal =preparedT.executeQuery();
resultTotal.next();
Double total =resultTotal.getDouble("Total");
Locale locale = new Locale("GBP");
NumberFormat gbpFormat = NumberFormat.getCurrencyInstance(locale);
System.out.println(gbpFormat.format(total));
preparedT.close();
}I do realise that my code probably isn't very elegant but I'm only learning!
Hi Matt--
I am not clear if you are saving the url with the # # around
the text or if
the
data already contains the # marks.
When you insert a link, you want to make sure you insert is
insert into table ( link1) values ( <cfqueryparam
cfsqltype="cf_sql_varchar"
value='#linkvaluehere#'> )
remember to
1) enclose your data's value inside quotes (some databases
are picky about
single v. double quotes).
2) if it IS in quotes, swap doubles for singles and see if
that helps.
3) make sure your data being saved is NOT double hashed like
'##linkvalueher##'. Double ##'s tell
Coldfusion not to treat it as a variable.
hope his helps,
tami
"Mattastic" <[email protected]> wrote in
message
news:f9c7h0$8ub$[email protected]..
| Hi Folks,
|
| I'm storing a link in a nvarchar field in SQL server,
www.foo.co.uk, it
looks
| and works fine in SQL server. Problem occurs when I setup
an ADP in Access
and
| insert links. Certain links have a hash symbol around them.
so
|
http://www.foo.co.uk, would be #
http://www.foo.co.uk# which is
causing
problems.
|
| Can anyone tell me why this is happening? and how to stop
it?
|
| Thankyou
|
Similar Messages
-
Problems with Prepared Statement
Hi,
I am developing an Java Bean that reads from a database of Entertainments of my home city of Glasgow and displays that info to a text area. I want the User to input the type of Entertainment they want e.g. Bars or Clubs, and the name of the place they want to go and then the Java Bean displays the info of the specified place.
The program works fine if I set the Query to display the data from the database but I want the User to define the query by thier input.
So I used Prepared Statements, but I have error messages saying that
Syntax Error in FROM Clause
my code to query the database is shown below
String query ="SELECT * FROM ? WHERE Name=?";
PreparedStatement PresStatement=con.prepareStatement(query);
//my input to test Database.will change to variable
PreStatement.setString(1,"Pubs");
PreStatement.setString(2,"Admiral");
ResultSet rs=PreStatement.executeQuery();The Problem seems to the placholder after the FROM clause but I can't seem to fix it.
Any Help would be greatly appreciated.
Regards
Brianjust a guess here, but I'd imagine it's because of the way PreparedStatement handles Strings. Obviously, if you're using a String as part of your SQL query, you're going to want single quotes around the entire thing. Thus, the first setString() is probably trying to put single quotes around the table name, which could be causing problems.
You don't really lose anything if you just work around this by changing your code to..
tableName = "Pubs"; //or this is probably coming from your user
String query ="SELECT * FROM "+tableName+" WHERE Name=?";
PreparedStatement PresStatement=con.prepareStatement(query);
//my input to test Database.will change to variable
PreStatement.setString(1,"Admiral");
ResultSet rs=PreStatement.executeQuery(); -
Problems with prepared statement in MYSQL.
I 've this code:
String sql = "UPDATE dcr SET Fecha=?, Origen=?, Destino=?, Mensaje=?, Estado=? WHERE IDDCR=? AND IDUsuario=?";
PreparedStatement st = cn.prepareStatement(sql);
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
java.sql.Date sqlDate = java.sql.Date.valueOf(fmt.format(this.fecha));
st.setDate(1, sqlDate);
st.setString(2, this.origen);
st.setString(3, this.destino);
st.setString(4, this.mensaje);
st.setString(5, this.estado);
st.setString(6, this.primaryKey);
st.setString(7, this.usuario);
I receive a SQLException with this message "Callable statments not supported" when the line "PreparedStatement st = cn.prepareStatement(sql)" is executed.
My JDBC Driver is "mysql-connector-java-3.0.11-stable-bin" and my server is "*MySQL 4.0.17-max"*.
Anybody see where is the problem?
Tnaks in advance.
Ricardo.I've more information about this problem.
If I take my code and put it in a class with a main function it works fine.
The original code is a part of a DAO pattern object that is invoked by a servlet (is the storeObject function).
The servlet create a record, send a native TCP/IP transaction to a external system and whit this code update the record previously created with the result of the transaction.
The system uses connection pooling. But the conection used in create of the record is diferent from the used in this code. (It's returned to the Datasource) All objects of the database process are closed in a finaly block before return the connection. (Statements, PreparedStatements , ResultSets, etc...)
Thanks in advance.
Ricardo -
Problem with prepared statement where cluase when passing string value.Help
I am updating a table using the following code. I am using string parameter in where clause. if I use Long parameter in where clause with ps.setLong , this code is working. Is there any special way to pass string value? Am I doing anything wrong?
===================
updateMPSQL.append("UPDATE MP_Table SET ");
updateMPSQL.append("MPRqmt = ?,End_Dt = ? ");
updateMPSQL.append("where POS = ? ");
System.out.println(updateMPSQL.toString());
con = getConnection(false) ;
ps = con.prepareStatement(updateMPSQL.toString());
ps.setLong(1,MPB.getMPRqmt());
ps.setDate(2,MPB.getEnd_Dt());
ps.setString(3,MPB.getPos());
result = ps.execute();
System.out.println("Result : " + result);
==========
Please help me.
Thanks in advance.
Regards,
Sekhardoesn't Pos look like a number rather than a string variable?
if I use Long
parameter in where clause with ps.setLong , this code
is working.
updateMPSQL.append("where POS = ? ");
ps.setString(3,MPB.getPos()); -
Problem with READ Statement in the field routine of the Transformation
Hi,
I have problem with read statement with binary search in the field routine of the transformation.
read statement is working well when i was checked in the debugging mode, it's not working properly for the bulk load in the background. below are the steps i have implemented in my requirement.
1. I selected the record from the lookuo DSO into one internal table for all entried in source_packeage.
2.i have read same internal table in the field routine for each source_package entry and i am setting the flag for that field .
Code in the start routine
select source accno end_dt acctp from zcam_o11
into table it_zcam
for all entries in source_package
where source = source_package-source
and accno = source_package-accno.
if sy-subrc = 0.
delete it_zcam where acctp <> 3.
delete it_zcam where end_dt initial.
sort it_zcam by surce accno.
endif.
field routine code:
read table it_zcam with key source = source_package-source
accno = source_package-accno
binary search
transportin no fields.
if sy-subrc = 0.
RESULT = 'Y'.
else.
RESULT = 'N'.
endif.
this piece of code exist in the other model there its working fine.when comes to my code it's not working properly, but when i debug the transformation it's working fine for those accno.
the problem is when i do full load the code is not working properly and populating the wrong value in the RESULT field.
this field i am using in the report filter.
please let me know if anybody has the soluton or reason for this strage behaviour.
thanks,
Rahim.i suppose the below is not the actual code. active table of dso would be /bic/azcam_o1100...
1. is the key of zcam_o11 source and accno ?
2. you need to get the sortout of if endif (see code below)
select source accno end_dt acctp from zcam_o11
into table it_zcam
for all entries in source_package
where source = source_package-source
and accno = source_package-accno.
if sy-subrc = 0.
delete it_zcam where acctp 3.
delete it_zcam where end_dt initial.
endif.
sort it_zcam by surce accno.
field routine code:
read table it_zcam with key source = source_package-source
accno = source_package-accno
binary search
transportin no fields.
if sy-subrc = 0.
RESULT = 'Y'.
else.
RESULT = 'N'.
endif. -
Autogenerated key with Prepared Statement...
Hi guys,
i've a question and i need help...
how can i retrieve autogenerated key with prepared Statement?
I see examples only about statements...please post me example code..where i've to put STATEMENT.RETURN_GENERATED_KEYS?
I need to use executeUpdate()...I didn't put it anywhere. I just called the getGeneratedKeys() method without using that constant anywhere and it just worked. -
Problem in Wilcard Search (%) with Prepared Statement
Hello Everyone,
Im trying to search using the like operator within a prepared statement. The program compiles , but when I execute it I get an empty result set.
I tried the same query in Query Analyser in SQL Server 2000 and it worked flawlessly.
I searched on this forum also and I read recommendations suggesting
to put the ? in like '?' This gives me an error.
Ive tried all options I could get my hands on ,now I request you all to please provide me some guidance.
Thankyou
The code snippet is as follows :
String sDay= "%"+startDay+"%";
ps= con.prepareStatement("Select * from Testdb where days like ? ");
ps.setString(1,sDay);
As I said earlier, this query returns and empty result set.
Thankyou once again.Its next to impossible for me to switch to Statement from prepared S. because the Query has got way to many conditions and its next to impossible to handle all those in a statement.
I had originally started out with statement itself but then I switched to prepared statement as it was getting unmanageable.
I'll try finding a work around whereby I split the query into two parts using the manageable part and the Wilcard search in the statement and the other unmanageable part in the PS.
Else I will again have to attempt that. I had also had a feeling this was affecting it.
Thanks for the help.
If anyone has some solution please post it .
Thank you. -
Another problem with updating in ms access
Hello there,
Me too has a problem with the update statement and ms access (using 2003).
I've read many other problems, but a way to the solution that worked for I didn't found :S
The strange thing with my problem is that i'm able to update integer fields in the database, but not varchar/text fields.
I'm not getting any exception back, the database is closed (i'm very sure), so HELP! :)
I'll show you the code i'm connecting with the database:
public void openDatabaseConnection() {
// Eerst controleren of de DatabaseDriver wel aanwezig is.
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
catch (Exception e) {
System.out.println("Looking for Class: " + e.toString());
// Nu kan de connectie met de database opgezet worden.
try {
theDatabaseConnection = DriverManager.getConnection("jdbc:odbc:Shawa","","ShaBaMa");
catch (SQLException ex) {
System.out.println("openDatabaseConnection: SQLException: " + ex.getMessage());
System.out.println("openDatabaseConnection: SQLState: " + ex.getSQLState());
System.out.println("openDatabaseConnection: VendorError: " + ex.getErrorCode());
}The code for updating an integer field (wich is working!) is like this:
public Customer cashCustomer(Customer aCustomer){
PreparedStatement pstmt;
ResultSet result;
try{
openDatabaseConnection();
pstmt = theDatabaseConnection.prepareStatement("UPDATE customer SET aantal_bier = aantal_bier + ?, aantal_fris = aantal_fris + ? WHERE id=?");
pstmt.setInt(1, aCustomer.getCashBeer());
pstmt.setInt(2, aCustomer.getCashSoda());
pstmt.setInt(3, aCustomer.getId());
theDatabaseConnection.setAutoCommit(false);
pstmt.executeUpdate();
theDatabaseConnection.commit();
pstmt.close();
theDatabaseConnection.close();
catch (SQLException eSql){
System.out.println("Cash Customer: " + eSql.toString());
System.out.println("Cash Customer: SQLException: " + eSql.getMessage());
System.out.println("Cash Customer: SQLState: " + eSql.getSQLState());
System.out.println("Cash Customer: VendorError: " + eSql.getErrorCode());
return aCustomer;
}Now the code for updating Varchar/text fields (wich is not working):
public Customer editCustomer(Customer aCustomer){
PreparedStatement pstmt;
ResultSet result;
try{
openDatabaseConnection();
pstmt = theDatabaseConnection.prepareStatement("UPDATE customer SET name=? , lastname=?, onderdeel=?, aantal_bier=?, aantal_fris=?, op_kaart=? WHERE id=?");
pstmt.setString(1, aCustomer.getName());
pstmt.setString(2, aCustomer.getLastname());
pstmt.setString(3, aCustomer.getSection());
pstmt.setInt(4, aCustomer.getBeer());
pstmt.setInt(5, aCustomer.getSoda());
pstmt.setInt(6, aCustomer.getId());
pstmt.setString(7, aCustomer.getAddCash());
theDatabaseConnection.setAutoCommit(false);
pstmt.executeUpdate();
theDatabaseConnection.commit();
pstmt.close();
theDatabaseConnection.close();
catch (SQLException eSql){
System.out.println("Updating Customer: " + eSql.toString());
System.out.println("Updating Customer: SQLException: " + eSql.getMessage());
System.out.println("Updating Customer: SQLState: " + eSql.getSQLState());
System.out.println("Updating Customer: VendorError: " + eSql.getErrorCode());
return aCustomer;
}I can add and delete from the database. The thing with the ' ' didn't work for me too.
Anybody a solution for me??? plz plz plz!You are updating zero records. Because you are filling in the parameter ofWHERE id=?with this code:pstmt.setString(7, aCustomer.getAddCash());The executeUpdate() method returns the number of records affected, if you wish to check that.
-
Problems with Callable Statement
Hi All,
I have a problem with the callable statement that contains stored procedure.Here main thing i want to know is that can a stored procedure can be used for a database like Access.Because i am using Access as a database here.In which i have created the table Students.
The table Students contains 3 fields they are name,amount & balance.
The program is compiling well but during the runtime it is showing an error:-
"Syntax error in Create Table" .
For ur reference i have posted the code:-
import java.io.*;
import java.sql.*;
public class CallStatDemo
public static void main(String arg[])
Connection con;
CallableStatement cs;
Driver dr;
String str1,str2;
int in1,in2;
double d1;
try
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection("jdbc:odbc:Ananth"); //the dsn name is Ananth
init(con);
if(con==null)
System.out.println("Connection not Established");
else
cs=con.prepareCall("{call Payment(?,?)}");
cs.setString(1,"Raman"); //name
cs.setString(2,"2000"); //amount
cs.execute();
catch(Exception e)
System.out.println("Error Message : "+e);
static void init(Connection con)
throws SQLException
Statement stmt = con.createStatement();
stmt.execute ("create or replace procedure Payment(name in text,amount in text)is " +
" begin"+
" update Students set balance=balance-amount where name =name;"+
"end Payment;");
stmt.close();
Thanx,
m.ananthuI have no clue if Access supports stored procedures, and this surely isn't related to JDBC at all. Did you check your Access documentation?
Your posted code does not contain any CREATE TABLE statement, so where do you get your error (which line)
Most probably Access does not support stored procedures. To verify that, you should execute your CREATE PROCEDURE statement from within Access, to verify that it is a supported statement. -
Problem with switch-statement & ä, ö, ü
Hi all,
I am doing this Java online tutorial right now and have a problem with one of the exercises. Hopefully you can help me:
I have to write a program that determines the number of consonants, vowels, punctuation characters, and spaces in an input line. I found a solution, but have two questions about it:
Im unable to calculate the amount of umlauts (ä, ö, ü). Somehow the program doesnt recognize those characters. Why?
In general Im not very happy with this huge list of cases. How would you solve a problem like this? Is there a more convenient/elegant way?
Thanks in advance!
Write a program that determines the number of consonants, vowels, punctuation characters, and spaces in an input line.
Read in the line into a String (in the usual way). Now use the charAt() method in a loop to access the characters one by one.
Use a switch statement to increment the appropriate variables based on the current character. After processing the line, print out
the results.
import java.util.Scanner;
class Kap43A1
public static void main ( String[] args )
String line;
char letter;
int total, countV=0, countC=0, countS=0, countU=0, countP=0;
Scanner scan = new Scanner(System.in);
System.out.println( "Please write a sentence " );
line = scan.nextLine();
total=line.length(); //Gesamtanzahl an Zeichen des Satzes
for (int counter=0; counter<total; counter++)
letter = line.charAt(counter); //ermitteln des Buchstabens an einer bestimmten Position des Satzes
switch (letter)
case 'A': case 'a':
case 'E': case 'e':
case 'I': case 'i':
case 'O': case 'o':
case 'U': case 'u':
countV++;
break;
case 'B': case 'b': case 'C': case 'c': case 'D': case 'd': case 'F': case 'f': case 'G': case 'g': case 'H': case 'h':
case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': case 'M': case 'm': case 'N': case 'n': case 'P': case 'p':
case 'Q': case 'q': case 'R': case 'r': case 'S': case 's': case 'T': case 't': case 'V': case 'v': case 'W': case 'w':
case 'X': case 'x': case 'Y': case 'y': case 'Z': case 'z':
countC++;
break;
case ' ':
countS++;
break;
case ',': case '.': case ':': case '!': case '?':
countP++;
break;
case 'Ä': case 'ä': case 'Ö': case 'ö': case 'Ü': case 'ü':
countU++;
break;
System.out.println( "Total amount of characters:\t" + total );
System.out.println( "Number of consonants:\t\t" + countC );
System.out.println( "Number of vocals:\t\t" + countV );
System.out.println( "Number of umlauts:\t\t" + countU );
System.out.println( "Number of spaces:\t\t" + countS );
System.out.println( "Number of punctuation chars:\t" + countP );
}WRE wrote:
In general Im not very happy with this huge list of cases. How would you solve a problem like this? Is there a more convenient/elegant way?I've been doing this a lot lately myself evaluating documents with 20 or so million words. Few tips:
1. Regular expressions can vastly reduce the list of cases. For example you can capture all letters from a to z or A to Z as follows [a-zA-Z]. To match a single character in a String you can then make use of the Pattern and Matcher classes, and incorporate the regular expression. e.g.
//Un-compiled code, may contain errors.
private Pattern letterPattern = Pattern.compile("[a-zA-Z]");
public int countNumberOfLettersInString(final String string) {
int count = 0;
Matcher letterMatcher = letterPattern.matcher(string);
while(letterMatcher.find()) {
count++;
return count;
}2. As mentioned above, Sets are an excellent choice. Simply declare a static variable and instantiate it using a static initializer block. Then loop over the String to determine if the character is in the given set. e.g.
//Un-compiled code, may contain errors.
private static Set<Character> macrons = new HashSet<Character>();
static {
macrons.add('ä');
macrons.add('ö');
macrons.add('ü');
public int countNumberOfMacronsInString(final String string) {
int count = 0;
for(char c : string.toCharArray()) {
if(macrons.contains(c) {
count++;
return count;
}Mel -
Problem with Exporter for MS Access 3.2 in SQL Developer
Hi,
I have problem with exporting tables and data from MS Access to XML with Exporter for MS Access 2000.
This error ocurr: 'Error #5 - XML Exporter'
When I use Exporter for MS Access 2002 this error ocurr: 'Error #3478 - XML Exporter'
Any leads how to solve this problem ?Thread moved to Forum Home » Database » SQL Developer
SQL Developer
Please, stay tune there.
Nicolas. -
Problem with PIVOT statement and ORA-56901
Hi,
I am having a problem with PIVOT in Oracle.
I have a view in an oracle 11g database
that returns me data in the format:- (... indicates left out text)
DefinitionID ... AttributeValue FieldID
============ ============== =======
... 3000 X30a9...
... JohnN X4674...
I am then trying to use a PIVOT statement to hopefully give me data
in the format
COLUMN1 COLUMN2
======= =======
JohnN 3000
The PIVOT statement I am trying is
SELECT X4674... AS Column1,
X30A9... AS COLUMN2
FROM (SELECT instanceid, definitionid, attributevalue, FIELDID
FROM PI_ENTITY_INSTANCE_VIEW) up PIVOT (MAX(ATTRIBUTEVALUE)
FOR FIELDID IN (X4674...,X30A9... ) )
where definitionid = hextoraw('7353C67A56C74B5A8234CD16064399E8')
I have used a very similar VIEW and PIVOT statement for sql server
(with necessary changes for Oracle applied) and the
data returns in SQL Server as expected.
Unfortunately I am getting the Oracle error
ORA-56901: non-constant expression is not allowed for pivot|unpivot values
Is there anyway to get a PIVOT working on Oracle where I use the
fieldid's like I do above or is there some other way to supply the vales to the
IN clause to overcome this error?
Thank you for any help you can provide
John NugentHi, John,
Welcome to the forum!
X4674, X30A9 and os on are the literal values that you're looking for, right?
In Oracle, string literals need to be enclosed in single-quotes, like this:
FOR FIELDID IN ('X4674', 'X30A9') You might find it more convenient to assign column aliases in the PIVOT clause, like this:
PIVOT ( MAX (attributevalue)
FOR fieldid IN ( 'X4674' AS column1
, 'X30A9' AS column2
) Remember that anything inside quotes is case-sensitive, so 'X30A9' is not equal to 'X30a9'. Use UPPER (or LOWER) to do case-insensitive string comparisons.
I hope this answers your question.
If not, post a little sample data (CREATE TABLE and INSERT statements, relevant columns only) for all tables, and also post the results you want from that data.
Explain, using specific examples, how you get those results from that data.
If you can use commonly available tables (such as those in the scott or hr schemas) to show your problem, then you don't have to post any sample data; just the results and explanation.
Always say which version of Oracle you're using. You did say you were using Oracle 11g, but there's no 11f or 11h, and sometimes the difference between, say 11.1 and 11.2 can be significant. Why not say exactly what you're using, e.g. 11.1.0.7.0?
You'll get better answers faster if you always supply this information whenever you post a question.
Edited by: Frank Kulash on Sep 22, 2011 2:09 PM
Added allliterative alias alternative
Edited by: Frank Kulash on Sep 22, 2011 4:04 PM -
Emergency: problem with update statement!
hello guys, i have a very serious problem with an update statement in pl/sql.
i had an application written in sybase, where i had the following update statement:
update mis_dik_adeia
set trexon_etos_days = days_per_year
from mis_dik_adeia, mis_plafon_adeivn
where mis_dik_adeia.adeia_id = mis_plafon_adeivn.adeia_id
and mis_dik_adeia.adeia_id between :aapo and :aews
and mis_dik_adeia.employee_id = :erg
and mis_dik_adeia.etos = :etos
and mis_plafon_adeivn.years_yphr = ( select max( a.years_yphr ) from mis_plafon_adeivn a where a.adeia_id = mis_plafon_adeivn.adeia_id and a.years_yphr <= :eth ) using sqlca;
This is working properly in sybase. When i copied this code in pl/sql it displayed me error and it's impossible to work. Then i thought to make a nested select statement like this:
update mis_dik_adeia
set trexon_etos_days = (select days_per_year
from mis_dik_adeia, mis_plafon_adeivn
where mis_dik_adeia.adeia_id = mis_plafon_adeivn.adeia_id
and mis_dik_adeia.adeia_id between aapo and aews
and mis_dik_adeia.employee_id = erg
and mis_dik_adeia.etos = etos1
and mis_plafon_adeivn.years_yphr = (
select max( a.years_yphr )
from mis_plafon_adeivn a
where a.adeia_id = mis_plafon_adeivn.adeia_id
and a.years_yphr <= eth )
but as you can understand, it is working, but it doesn't produce the same results as the update statement in Sybase!
It is very important for me to solve this problem , which is a very big trouble for me for a long time.
Please if anyone can help me i would appreciate it a lot!
Regards ,
Bill...Bill,
folowing the logic of your original query by Sybase
(it's embedded SQL in Power Builder, isn't it ?):
update mis_dik_adeia
set trexon_etos_days = (select days_per_year
from mis_plafon_adeivn
where mis_dik_adeia.adeia_id = mis_plafon_adeivn.adeia_id
and mis_plafon_adeivn.years_yphr = (
select max( a.years_yphr )
from mis_plafon_adeivn a
where a.adeia_id = mis_plafon_adeivn.adeia_id
and a.years_yphr <= eth )
where
mis_dik_adeia.adeia_id between aapo and aews
and mis_dik_adeia.employee_id = erg
and mis_dik_adeia.etos = etos1
and
exists (select 1
from mis_plafon_adeivn
where mis_dik_adeia.adeia_id = mis_plafon_adeivn.adeia_id
and mis_plafon_adeivn.years_yphr = (
select max( a.years_yphr )
from mis_plafon_adeivn a
where a.adeia_id = mis_plafon_adeivn.adeia_id
and a.years_yphr <= eth )
In 9i you can also try the following:
megre into mis_dik_adeia
using (
select
days_per_year,
mis_dik_adeia.rowid rid
from mis_dik_adeia, mis_plafon_adeivn
where mis_dik_adeia.adeia_id = mis_plafon_adeivn.adeia_id
mis_dik_adeia.adeia_id between aapo and aews
and mis_dik_adeia.employee_id = erg
and mis_dik_adeia.etos = etos1
and mis_plafon_adeivn.years_yphr =
(select max( a.years_yphr )
from mis_plafon_adeivn a
where a.adeia_id = mis_plafon_adeivn.adeia_id
and a.years_yphr <= eth)
) src
on (mis_dik_adeia.rowid = src.rid)
when matched then
update set mis_dik_adeia.trexon_etos_days = src.days_per_year
when not matched then
insert (mis_dik_adeia.adeia_id) values(0);
In 10G it can be easily:
megre into mis_dik_adeia
using (
select
days_per_year,
mis_dik_adeia.rowid rid
from mis_dik_adeia, mis_plafon_adeivn
where mis_dik_adeia.adeia_id = mis_plafon_adeivn.adeia_id
mis_dik_adeia.adeia_id between aapo and aews
and mis_dik_adeia.employee_id = erg
and mis_dik_adeia.etos = etos1
and mis_plafon_adeivn.years_yphr =
(select max( a.years_yphr )
from mis_plafon_adeivn a
where a.adeia_id = mis_plafon_adeivn.adeia_id
and a.years_yphr <= eth)
) src
on (mis_dik_adeia.rowid = src.rid)
when matched then
update set mis_dik_adeia.trexon_etos_days = src.days_per_year;
I have to notice I didn't check it carefully, so I can miss...
Rgds.
Corrected a mistake in the table name
Message was edited by:
dnikiforov -
Hi
I am trying to achieve the following in my report:
If an employee has a surname of . (dot) or a first name of . (dot), the report should not display a dot. An employee's name is made up of surname, first name and middle name which should all be concatenated together. To try to achieve this, I have the following statement in my report:
decode(e.Surname, '.', ( LTRIM(RTRIM((INITCAP(e.FIRST_NAME)))||' '||INITCAP(e.MIDDLE_NAME)) ) ,
e.FIRST_NAME, '.', ( LTRIM(RTRIM((INITCAP(e.Surname)))||' '||INITCAP(e.MIDDLE_NAME)) ) ,
( LTRIM(RTRIM((INITCAP(e.SURNAME )))||', '||INITCAP(e.FIRST_NAME)||' '||INITCAP(e.MIDDLE_NAME)) ) ) as emp_name
FROM Employee e
Problem: The above statement is only working for those employees with surname of . (dot). It's not working for first names of dot. How can I use the decode statement OR is there any other way of doing it without using the CASE statement?
It seems my decode statement doesn't work with 2 different fields (surname, firstname) being tested within one decode statement.Thanks.Thank you so much InoL . I have used the ltrim with Replace but now have a new problem.
Because I am joining Surname, First name and middle name together and put a comma after the Surname, the name now appears as follows:
, Maria Ane (if Surname is a dot)
Boiler, (if first name is a dot)
I would like to get rid of a comma and only have comma when surname or first name does not have a dot, i.e. for those people with full names e.g. Blake, Anna Marie.
InoL, how can I achieve this? Thanks. -
Hi All,
We are encountering a strange problem with the merge command.
The following statement works :-
merge into ATTRIBUTE_GROUP@US_PRODUCT_UAT a
using
select
a1.group_id,
a1.NAME,
a1.CREATE_DATE,
a1.MODIFY_DATE
from
ATTRIBUTE_GROUP_LOG a1,
product_push_wrk a2
where
a2.column_id = a1.group_id and
a2.modify_date = a1.modify_date ) b
on ( a.group_id = b.group_id)
when matched then
update set
a.NAME = b.NAME,
a.CREATE_DATE = b.CREATE_DATE,
a.MODIFY_DATE = b.MODIFY_DATE
when not matched then
insert
a.group_id,
a.NAME,
a.CREATE_DATE,
a.MODIFY_DATE
values
b.group_id,
b.NAME,
b.CREATE_DATE,
b.MODIFY_DATE
However when we change the order of the columns in the select query as follows the an error occurs : -
merge into ATTRIBUTE_GROUP@US_PRODUCT_UAT a
using
select
a1.NAME,
a1.group_id,
a1.CREATE_DATE,
a1.MODIFY_DATE
from
ATTRIBUTE_GROUP_LOG a1,
product_push_wrk a2
where
a2.column_id = a1.group_id and
a2.modify_date = a1.modify_date ) b
on ( a.group_id = b.group_id)
when matched then
update set
a.NAME = b.NAME,
a.CREATE_DATE = b.CREATE_DATE,
a.MODIFY_DATE = b.MODIFY_DATE
when not matched then
insert
a.group_id,
a.NAME,
a.CREATE_DATE,
a.MODIFY_DATE
values
b.group_id,
b.NAME,
b.CREATE_DATE,
b.MODIFY_DATE
ERROR at line 15:
ORA-00904: "B"."GROUP_ID": invalid identifier
SQL> l 15
15* on ( a.group_id = b.group_id)
The structure of the attribute_log table is as follows :-
SQL> desc ATTRIBUTE_GROUP
Name Null? Type
GROUP_ID NOT NULL NUMBER
NAME NOT NULL VARCHAR2(96)
CREATE_DATE NOT NULL DATE
MODIFY_DATE NOT NULL DATE
Any pointers to the cause of this error will be highly appreciated.
Thanks and Regards,
SumanThe table structures are as follows :-
04:17:17 SQL> desc product_push_wrk
Name Null? Type
COLUMN_ID NOT NULL NUMBER
TYPE NOT NULL VARCHAR2(10)
PARENT_COLUMN_ID NUMBER
LEVEL_NO NUMBER
MODIFY_DATE NOT NULL DATE
04:17:25 SQL> desc ATTRIBUTE_GROUP_LOG
Name Null? Type
GROUP_ID NOT NULL NUMBER
NAME NOT NULL VARCHAR2(96)
CREATE_DATE DATE
MODIFY_DATE DATE
04:18:02 SQL> desc ATTRIBUTE_GROUP
Name Null? Type
GROUP_ID NOT NULL NUMBER
NAME NOT NULL VARCHAR2(96)
CREATE_DATE DATE
MODIFY_DATE DATE
Maybe you are looking for
-
Everytime i go to download an App from my Ipod Touch, the app begins to download with the words, "Waiting" underneath it. ....after a few seconds....the App DISAPPEARS!...i've tried turning it on and off, reseting billing information, going to downl
-
WLC 5508 - Set SNMP traps differently per AP
Hey All, We have a controller with multiple remote AP's connected to it. A couple of the AP's are at branch offices connected to very low quality DSL connections (which is all that is available) and because of this those AP's cut SNMP traps constant
-
hello, i'm learning java with java with bluej. at the end of the book we learn how to start a game without any other program. but it won't work. my methode main: public static void main(String[] args) Game game = new Game(); game.
-
Lv71/labview: realloc(): invalid next size:
Linux Weenies; I've had good luck running LV7.1 on Suse 10.1 and 10.3 (x86_64). I have installed the box version from Novell of Suse 10.3 and now get the following errors: *** glibc detected *** /usr/local/lv71/labview: realloc(): invalid next size:
-
My live encoder 3 says no more memory. Which memory?
My encoder stopped because it said that it was out of memory. Is this memory from my computer, or does it have it's own memory somewhere? Thank you very much, Jim