Re: Single quote as first character in string fails in compare
Date: Mon, 10 Oct 2011 11:02:57 +0200
Message-ID: <j6ucbl$a3i$1_at_dont-email.me>
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 --Received on Mon Oct 10 2011 - 04:02:57 CDT
