Вопрос, связанный с DBMS_SQL.PARSE - PullRequest
2 голосов
/ 15 марта 2011

У меня есть запрос типа

queryStr := 'SELECT col1, col2, col3, col4 FROM Table1 WHERE date_created >= ';

, и тогда я вижу следующее утверждение

DBMS_SQL.PARSE (cursor_handle, queryStr || ':date', DBMS_SQL.NATIVE);
DBMS_SQL.BIND_VARIABLE (cursor_handle, 'date', dateVariable);

Теперь мой вопрос: как получается, что dbms_sql.parse использует переменную : date , так как в запросе нет: date placeholder т.е. queryStr ?

1 Ответ

3 голосов
/ 15 марта 2011

ваш код эквивалентен этому:

DBMS_SQL.PARSE (cursor_handle,
                'SELECT col1, col2, col3, col4 
                   FROM Table1 
                  WHERE date_created >= :date', 
                DBMS_SQL.NATIVE);
DBMS_SQL.BIND_VARIABLE (cursor_handle, 'date', dateVariable);

Запрос анализируется в первом операторе.Этот оператор имеет переменную связывания (: date).Значение этой переменной связывания указано во втором операторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...