![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
I got a very strange problem. If the first character in a string is a single quote I get a syntax error, but that only happens in a compare and not in sqlplus. This is what happens: SELECT * FROM dual WHERE dummy ='''aaaa' DBArecordSet.OpenSet: Error from: 'OraOLEDB' 0x80040E14 (-2147217900) ORA-00933: SQL command not properly ended Native: 933 (help=.0) This goes wrong with an OLEDB and ODBC connection. It works in sqlplus. |
#3
| |||
| |||
|
|
El 07/10/2011 20:30, Joachim Verhagen escribi /wrote: I got a very strange problem. * If the first character in a string is a single quote I get a syntax error, *but that only happens in a compare and not in sqlplus. This is what happens: SELECT * FROM dual WHERE dummy ='''aaaa' DBArecordSet.OpenSet: Error from: 'OraOLEDB' 0x80040E14 (-2147217900) ORA-00933: SQL command not properly ended Native: 933 *(help=.0) This goes *wrong with an OLEDB and ODBC connection. *It works in sqlplus. I don't know what your client language is but here's an excerpt from the ODBC chapter in the PHP manual: Parameters in parameter_array will be substituted for placeholders in the prepared statement in order. Elements of this array will be converted to strings by calling this function. Any parameters in parameter_array which start and end with single quotes will be taken as the name of a file to read and send to the database server as the data for the appropriate placeholder. If you wish to store a string which actually begins and ends with single quotes, you must add a space or other non-single-quote character to the beginning or end of the parameter, which will prevent the parameter from being taken as a file name. If this is not an option, then you must use another mechanism to store the string, such as executing the query directly with odbc_exec()). http://es.php.net/manual/en/function.odbc-execute.php It isn't exactly your case (your string does not end with single quote) but this suggests that the ODBC implementation has a weird relationship with single quotes. -- --http://alvaro.es- lvaro G. Vicario - Burgos, Spain -- Mi sitio sobre programaci n web:http://borrame.com -- Mi web de humor satinado:http://www.demogracia.com -- |
#4
| |||
| |||
|
|
El 07/10/2011 20:30, Joachim Verhagen escribió/wrote: I got a very strange problem. If the first character in a string is a single quote I get a syntax error, but that only happens in a compare and not in sqlplus. This is what happens: SELECT * FROM dual WHERE dummy ='''aaaa' DBArecordSet.OpenSet: Error from: 'OraOLEDB' 0x80040E14 (-2147217900) ORA-00933: SQL command not properly ended Native: 933 (help=.0) This goes wrong with an OLEDB and ODBC connection. It works in sqlplus. I don't know what your client language is but here's an excerpt from the ODBC chapter in the PHP manual: «Parameters in parameter_array will be substituted for placeholders in the prepared statement in order. Elements of this array will be converted to strings by calling this function. Any parameters in parameter_array which start and end with single quotes will be taken as the name of a file to read and send to the database server as the data for the appropriate placeholder. If you wish to store a string which actually begins and ends with single quotes, you must add a space or other non-single-quote character to the beginning or end of the parameter, which will prevent the parameter from being taken as a file name. If this is not an option, then you must use another mechanism to store the string, such as executing the query directly with odbc_exec()).» http://es.php.net/manual/en/function.odbc-execute.php It isn't exactly your case (your string does not end with single quote) but this suggests that the ODBC implementation has a weird relationship with single quotes. |
#5
| |||
| |||
|
|
On Mon, 10 Oct 2011 11:02:57 +0200, "Álvaro G. Vicario" alvaro.NOSPAMTHANX (AT) demogracia (DOT) com.invalid> wrote: El 07/10/2011 20:30, Joachim Verhagen escribió/wrote: I got a very strange problem. If the first character in a string is a single quote I get a syntax error, but that only happens in a compare and not in sqlplus. This is what happens: SELECT * FROM dual WHERE dummy ='''aaaa' DBArecordSet.OpenSet: Error from: 'OraOLEDB' 0x80040E14 (-2147217900) ORA-00933: SQL command not properly ended Native: 933 (help=.0) This goes wrong with an OLEDB and ODBC connection. It works in sqlplus. I don't know what your client language is but here's an excerpt from the ODBC chapter in the PHP manual: «Parameters in parameter_array will be substituted for placeholders in the prepared statement in order. Elements of this array will be converted to strings by calling this function. Any parameters in parameter_array which start and end with single quotes will be taken as the name of a file to read and send to the database server as the data for the appropriate placeholder. If you wish to store a string which actually begins and ends with single quotes, you must add a space or other non-single-quote character to the beginning or end of the parameter, which will prevent the parameter from being taken as a file name. If this is not an option, then you must use another mechanism to store the string, such as executing the query directly with odbc_exec()).» http://es.php.net/manual/en/function.odbc-execute.php It isn't exactly your case (your string does not end with single quote) but this suggests that the ODBC implementation has a weird relationship with single quotes. Hi Alvaro, Thank you for your answer. The language is Visual Basic. Putting a space before the quote does not give an error but the compare fails. Nothing special happens. Joachim. |
#6
| |||
| |||
|
|
On Oct 10, 5:02*am, "Álvaro G. Vicario" alvaro.NOSPAMTH... (AT) demogracia (DOT) com.invalid> wrote: El 07/10/2011 20:30, Joachim Verhagen escribi /wrote: I got a very strange problem. * If the first character in a string is a singlequoteI get a syntax error, *but that only happens in a compare and not in sqlplus. This is what happens: SELECT * FROM dual WHERE dummy ='''aaaa' DBArecordSet.OpenSet: Error from: 'OraOLEDB' 0x80040E14 (-2147217900) ORA-00933: SQL command not properly ended Native: 933 *(help=.0) This goes *wrong with an OLEDB and ODBC connection. *It works in sqlplus. I don't know what your client language is but here's an excerpt from the ODBC chapter in the PHP manual: Parameters in parameter_array will be substituted for placeholders in the prepared statement in order. Elements of this array will be converted to strings by calling this function. Any parameters in parameter_array whichstartand end with single quotes will be taken as the name of a file to read and send to the database server as the data for the appropriate placeholder. If you wish to store a string which actually begins and ends with single quotes, you must add a space or other non-single-quotecharacter to the beginning or end of the parameter, which will prevent the parameter from being taken as a file name. If this is not an option, then you must use another mechanism to store the string, such as executing the query directly with odbc_exec()). http://es.php.net/manual/en/function.odbc-execute.php It isn't exactly your case (your string does not end with singlequote) but this suggests that the ODBC implementation has a weird relationship with single quotes. -- --http://alvaro.es-lvaro G. Vicario - Burgos, Spain -- Mi sitio sobre programaci n web:http://borrame.com -- Mi web de humor satinado:http://www.demogracia.com -- I find this to be an interesting piece of information. *As is the fact a name canstartwith a sinlequote. *In Englishnamesabout the only time you run into single quotes innamesis with O'reilly, O'connor, etc ... and it is not a starting or ending. *Naturally I have seen quoted strings being stored but apparently the access is not via ODBC. HTH -- Mark D Powell -- |
![]() |
| Thread Tools | |
| Display Modes | |
| |