powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / JDBC вызов процедур
24 сообщений из 24, страница 1 из 1
JDBC вызов процедур
    #39988397
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишу код
Код: java
1.
CallableStatement stmt = connection.prepareCall("{CALL some_proc()}");


получаю исключениеFBSQLParseException: Unexpected first character inside JDBC escape: C
Если записать call маленькими буквами, то все работает. Это так и задумано или оформлять баг?

С уважением, Vasilisk
...
Рейтинг: 0 / 0
JDBC вызов процедур
    #39988403
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

фиг знает. я вот смотрю, ан масс в примерах пишут call someproc, т.е. мелкими буквами. Чтобы писали CALL, нашел только у DB2.

А перед тем как оформлять баг, неплохо бы спросить у разработчика jdbc-драйвера, почему оно так.

p.s.
Код: java
1.
2.
String SQL = "{call Books.BookDetails_Get(?)}" // for Microsoft SQL Server
String Oracle = "BEGIN BOOKDETAILS_GET(?); END;"; // Oracle requires begin/end instead of call and {}
...
Рейтинг: 0 / 0
JDBC вызов процедур
    #39988414
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Это так и задумано или оформлять баг?

JDBC спека ничего об этом не говорит. Апачевский Дерби утверждает, что ключевые слова
нечувствительны к регистру.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
JDBC вызов процедур
    #39988418
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
_Vasilisk_,

А перед тем как оформлять баг, неплохо бы спросить у разработчика jdbc-драйвера, почему оно так.

p.s.
Код: java
1.
2.
String SQL = "{call Books.BookDetails_Get(?)}" // for Microsoft SQL Server
String Oracle = "BEGIN BOOKDETAILS_GET(?); END;"; // Oracle requires begin/end instead of call and {}



Про Оракл неправда. Работает и {call STOREDPROC} , специально сейчас проверил.

{CALL STOREDPROC} тоже работает.
...
Рейтинг: 0 / 0
JDBC вызов процедур
    #39988442
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak,

ну, про Оракл это не я придумал, цитата.
...
Рейтинг: 0 / 0
JDBC вызов процедур
    #39988643
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
неплохо бы спросить у разработчика jdbc-драйвера, почему оно так.
Где его найти?
kdv
Код: java
1.
String Oracle = "BEGIN BOOKDETAILS_GET(?); END;"; // Oracle requires begin/end instead of call and {}

Всегда для оракла писал
Код: java
1.
"{CALL SOME_PROC(?)}"


Dimitry Sibiryakov
JDBC спека ничего об этом не говорит. Апачевский Дерби утверждает, что ключевые слова нечувствительны к регистру.
Можно ссылку? И буду писать в трекер
...
Рейтинг: 0 / 0
JDBC вызов процедур
    #39988646
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Всегда для оракла писал

это потому что в JDBC существует такое понятие как escape-последовательностей SQL. Они предназначены для того чтобы попытаться сгладить разницу SQL реализации для разных СУБД. А уж во что они преобразуется дело драйвера

_Vasilisk_Можно ссылку? И буду писать в трекер

http://tracker.firebirdsql.org/browse/JDBC
...
Рейтинг: 0 / 0
JDBC вызов процедур
    #39988659
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
это потому что в JDBC существует такое понятие как escape-последовательностей SQL. Они предназначены для того чтобы попытаться сгладить разницу SQL реализации для разных СУБД. А уж во что они преобразуется дело драйвера
Это я знаю. Просто Дмитрий говорил, что для Оракла нужно только через begin-end
Симонов Денис
_Vasilisk_Можно ссылку? И буду писать в трекер

http://tracker.firebirdsql.org/browse/JDBC Не ту ссылку. Вот эту
Dimitry Sibiryakov
Апачевский Дерби утверждает, что ключевые слова нечувствительны к регистру.
...
Рейтинг: 0 / 0
JDBC вызов процедур
    #39988660
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
JDBC вызов процедур
    #39988664
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Вот эту

https://www.google.com/search?q=JDBC escape syntax case sensitivity
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
JDBC вызов процедур
    #39988666
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
kdvнеплохо бы спросить у разработчика jdbc-драйвера, почему оно так.
Где его найти? https://groups.google.com/forum/#!forum/firebird-java
...
Рейтинг: 0 / 0
JDBC вызов процедур
    #39988669
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad https://groups.google.com/forum/#!forum/firebird-java

Там сейчас в лучшем случае Марк, которому оно таким уже досталось в наследство, а
комментарии "почему это именно так" никто же не пишет...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
JDBC вызов процедур
    #39988674
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрел код. Чистая бага.

Вначале определяется начало последовательности
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
        ESCAPE_ENTER_STATE {
            protected FBEscapedParser.ParserState nextState(char inputChar) throws FBSQLParseException {
                switch(inputChar) {
                case '?':
                case 'c':
                case 'd':
                case 'e':
                case 'f':
                case 'l':
                case 'o':
                case 't':
                    return NORMAL_STATE;
                default:
                    throw new FBSQLParseException("Unexpected first character inside JDBC escape: " + inputChar);
                }
            }
        },



а потом все это приводится в нижний регистр
Код: java
1.
2.
3.
4.
5.
    private void escapeToNative(StringBuilder target, String escaped) throws SQLException {
        StringBuilder keyword = new StringBuilder();
        StringBuilder payload = new StringBuilder(Math.max(16, escaped.length()));
        this.processEscaped(escaped, keyword, payload);
        String keywordStr = keyword.toString().toLowerCase();

Если написать "{cALL some_proc()}" то все работает
...
Рейтинг: 0 / 0
JDBC вызов процедур
    #39988677
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

ну тогда напиши трекеру, нас-то тут чего мучать ? :)
...
Рейтинг: 0 / 0
JDBC вызов процедур
    #39988685
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad
ну тогда напиши трекеру, нас-то тут чего мучать ? :)
Ну уже написал http://tracker.firebirdsql.org/browse/JDBC-632

вас мучил, потому, что думал, что я чего-то не понимаю
...
Рейтинг: 0 / 0
JDBC вызов процедур
    #39988717
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Дмитрий говорил, что для Оракла нужно только через begin-end
да не говорил я что "только". Я просто привел пример из чужой статьи, где был и мсскл и оракл. Как вариант. Мне это ваше JDBC нафиг не надо :-)
И begin/end у Оракла это еще один вариант к call.
...
Рейтинг: 0 / 0
JDBC вызов процедур
    #39988720
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
И begin/end у Оракла это еще один вариант к call.
Ну и в JayBird можно писать EXECUTE PROCEDURE без всякого CALL
...
Рейтинг: 0 / 0
JDBC вызов процедур
    #39988770
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Марк уже пофиксил. Говорит, что сломалось при переходе на Jaybird 3.0
...
Рейтинг: 0 / 0
JDBC вызов процедур
    #39988777
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

так это, вопрос остался без ответа - занафига писать CALL вместо обще-массово-принятого call. А?
...
Рейтинг: 0 / 0
JDBC вызов процедур
    #39988793
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
так это, вопрос остался без ответа - занафига писать CALL вместо обще-массово-принятого call. А?
Независимость и переносимость кода между DBMS. Та же хрень и в ODBC.
...
Рейтинг: 0 / 0
JDBC вызов процедур
    #39988819
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

чёй-та, переносимость? все пишут call, оно переносимо. Автор топика взял, и написал капслоком CALL, получил по лбу.
В FB call работало? да, было совместимо и переносимо.

p.s. вот ей-богу, ради прикола прошерстил примеры в инете, ну я вообще не видел чтобы хоть кто-то писал CALL большими буквами. Это же как себе на я..цы наступить, что в С/C++, что в Java. Это у нас, кошерных дельфистов, регистр пофиг.
...
Рейтинг: 0 / 0
JDBC вызов процедур
    #39988906
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
чёй-та, переносимость?
Это ты меня спрашиваешь ? Не спрашивай :)
...
Рейтинг: 0 / 0
JDBC вызов процедур
    #39988949
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
занафига писать CALL вместо обще-массово-принятого call. А?
Потому что и в мыслях не было, что оно может не работать
...
Рейтинг: 0 / 0
JDBC вызов процедур
    #39988953
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvЭто у нас, кошерных дельфистов, регистр пофиг.

Языком, используемым в ODBC/JDBC, является SQL, который тоже нечувствителен к регистру.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / JDBC вызов процедур
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]