SqlException: DB2 SQL error: SQLCODE: -302, SQLSTATE: 22001, SQLERRMC: null - db2

What does sqlcode -302 means?
Where do i get the sqlcode definitions?
Please advice
Thanks,

You can find the codes in the DB2 Information Center. Here's a definition of the -302 from the z/OS Information Center:
THE VALUE OF INPUT VARIABLE OR PARAMETER NUMBER position-number IS
INVALID OR TOO LARGE FOR THE TARGET COLUMN OR THE TARGET VALUE
On Linux/Unix/Windows DB2, you'll look under SQL Messages to find your error message. If the code is positive, you'll look for SQLxxxxW, if it's negative, you'll look for SQLxxxxN, where xxxx is the code you're looking up.

To get the definition of the SQL codes, the easiest way is to use db2 cli!
at the unix or dos command prompt, just type
db2 "? SQL302"
this will give you the required explanation of the particular SQL code that you normally see in the java exception or your db2 sql output :)
hope this helped.

As a general point when using a search engine to search for SQL codes make sure you put the sqlcode e.g. -302 in quote marks - like "-302" otherwise the search engine will exclude all search results including the text 302, since the - sign is used to exclude results.

Related

Line Numbers for Errors not returning in SQL Developer when querying postgres

As the title states, I am not getting the line numbers for errors in SQL Developer when I query a Postgres DB. Just a position error. Something like:
ERROR: syntax error at or near "SELECT"
Position: 135
I went into the preference and have the 'Show Line Numbers' enabled:
but they aren't showing. Is this an issue with Postgres in SQL Developer or something else?
Thanks.
Preference you set is related to line numbers here:
(that's the result of a mouse right-click).
What you're looking for is related to the way database reports errors. As far as Oracle is concerned, it works as expected:
As I don't use PostgreSQL, I can't comment it.

SQL Developer and DB2 errors

I'd like to use SQL Developer with DB2, I was able to connect and I canned execute my queries, but when I have an error, I cannot know witch error is. SQL Developer shown me only the error code, not the message. There is the way to know the error I have?
EDIT:
For example, launching this query:
Select * from WrongTable
other programs says:
ERROR[42704][IBM][DB2/NT64] SQL0204N "USERNAME.WRONGTABLE" è un nome non definito
sqldeveloper limits its report to the error nr only:
Errore alla riga del comando : 1 colonna : 1
Report errori -
Errore SQL: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=USERNAME.WRONGTABLE, DRIVER=4.19.49
Thank you.
The URL syntax for connecting to Db2 with type-4 jdbc drivers is documented here.
The property that controls how much information is returned with getMessage() is called retrieveMessagesFromServerOnGetMessage, and its default value is disabled ( false , 0 ). Set it to value 1 (or YES, or true )to enable more details on errors.
You can append many properties after the database name in the Database field, on the Oracle SQL-Developer connection properties. Express each property in the form x=y , each x=y pair is separated by a semi-colon and the final one is terminated by a semi-colon, and the first property is prefixed by colon immediately after the database name.
For example, suppose the database name is sample and I wanted three additional properties, the I would put this in the Database field in Oracle-SQL-developer:
sample:useJDBC4ColumnNameAndLabelSemantics=No;securityMechanism=11;retrieveMessagesFromServerOnGetMessage=1;
If value 1 does not give the expected result, use value YES although they should be equivalent. Remember to SAVE the setting change, disconnect from the database, reconnect , before retrying your queries to assess the change.
Many other properties are available, see many related pages in the documentation , some properties are common to all target Db2 platforms, other properties are specific to Db2-LUW, or Db2-Z/OS, or Informix etc, so read the docs carefully. Some properties can be set by code after the connection is already established.

MySQLi Update data in a table

Please help me out with this. Basically to update an existing table (chem_users) with data using 2 keys UserId & Password (or only 1 primary key is allowed?).
Using MySQLi, what is wrong with this syntax.
$sql = "UPDATE chem_users SET (Prj1, Prj2) VALUES ('{$_POST['kinetics']}',
'{$_POST['thermo']}') WHERE (UserId=JohnKing Password=1234rewq)";
I got this error:
Error saving user data You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(Prj1, Prj2) VALUES ('kinetics' at line 1
Try using this syntax:
$sql="UPDATE `chem_users` SET `Prj1`=".$_POST['kinetics'].",`Prj2`=".$_POST['thermo']." WHERE `UserId`='JohnKing' AND `Password`='1234rewq'";
By the way, you shouldn't just concatenate a variable inside a query like you are doing,you should use Prepared Statements.You can learn a little bit about it in this link: http://www.w3schools.com/php/php_mysql_prepared_statements.asp

What is the best way to decipher a DB2 -302 error from Java?

I am getting this error running an insert query for a single record:
DB2 SQL Error: SQLCODE=-302, SQLSTATE=22001, SQLERRMC=null,
DRIVER=3.62.56
Exception: org.springframework.dao.DataIntegrityViolationException
I looked this up on IBM's help site, but there being no parameter index, I am stuck. The SQL state also seems to specify it is other than a value being too big.
The format of the query is INSERT INTO [[TABLE_NAME]] VALUES (?,?,?,...) using Spring's JdbcTemplate.update(String sql, Object... params).
This being for work, I cannot post schema nor query. I am looking for general advice into debugging this issue. I already know using Arrays.toString(Object[]) does not print out in SQL format.
To find the explanation for SQLCODE -302 in the manual you need to search for SQL0302N (the general rule for DB2 SQLCODE values is this: "SQL" plus four digits, padded if necessary with zeros on the left, plus "N" for "negative" because -302 is a negative number).
If you have the DB2 command line processor installed, you can also use it to look up error codes:
db2 ? sql302
which would produce something like this:
SQL0302N The value of a host variable in the EXECUTE or OPEN
statement
is out of range for its corresponding use.
Explanation:
The value of an input host variable was found to be out of range for
its use in the SELECT, VALUES, or prepared statement.
In other words, one of the bind variables in your INSERT is too large for the target column. You'll need to compare the table column definitions with the actual values you're trying to insert.
In addition to mustaccio's answer you can also get the info from sql with SYSPROC.SQLERRM. Example:
values SYSPROC.SQLERRM ('SQL302', '', '', 'en_US', 0)
SQL0302N The value of a host variable in the EXECUTE or OPEN statement
is out of range for its corresponding use.
Explanation:
...

iReports ORA-00911: invalid character

When I specify the query via Data-> Report Query I get the below error. It doesn't say what the invalid character is though. Any idea on how to resolve this?
Caused by: java.sql.SQLException: ORA-00911: invalid character
The problem was a semicolon (";") character in the middle of the query. The query ran in oracle SQL developer because the semicolon broke the query at a valid place.