|
Помогите пожалуйста разобраться с хранимой процедурой в IBExpert.
|
|||
---|---|---|---|
#18+
Перевожу учебный проект с MySQL на Firebird Embedded. Готовлю базу данных для эксплуатации. Это вроде последнее, что останавливает от перехода на Firebird. Есть таблица "sector", в неё посредством хранимой процедуры вставляется или изменяется запись. Итак, хранимая процедура в MySQL, как она есть: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67.
Теперь то, что я наваял в IBExpert: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73.
Если возле ' Запись обновлена.'); оставить символ ";", то IBExpert указывает на окончание этой строки. Если точку с запятой убрать, то указывает на следующий END. Не пойму, что он от меня тут хочет. Дальше я пока не правил сильно. Правильно ли я использую переменные, передаваемые в хранимую процедуру? Просто "_ID", с кавычками? Правильно ли я делаю CONCAT? Помогите плз, а то хелпы на ibexpert.net не очень радуют наличием нужной информации. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2011, 23:54 |
|
Помогите пожалуйста разобраться с хранимой процедурой в IBExpert.
|
|||
---|---|---|---|
#18+
И то, что я вместо DATETIME поставил timestamp, это правильно? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 00:24 |
|
Помогите пожалуйста разобраться с хранимой процедурой в IBExpert.
|
|||
---|---|---|---|
#18+
1. как писать процедуры: http://www.ibase.ru/devinfo/sp_call.htm читай про "Обработка данных в процедурах" потому что вот это select CONCAT('ID: ', _id , ' FullName: ', fullName , ' Запись обновлена.'); во-первых фигня, т.к. Select без from в IB/FB нет. Во-вторых, у тебя в процедуре данные никуда не возвращаются. И в третьих, в IB/FB нет CONCAT, можно просто писать result=cast(id as varchar(15))||FullName||' Запись обновлена' 2. двойных кавычек нафигачил зря. http://www.ibase.ru/ibfaq.htm#dtproblem Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
в таблицах, к счастью, этого ужаса ("имя"), как я вижу, нет. Впрочем, можно оставить и так, если тебя не напрягает закавычивание таких имен переменных. Без двойных кавычек идентификатор должен начинаться с латинской буквы. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 00:44 |
|
Помогите пожалуйста разобраться с хранимой процедурой в IBExpert.
|
|||
---|---|---|---|
#18+
Вроде разобрался. Получилось вот что: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77.
При выполнении выводит следующее: EXECUTE PROCEDURE addorchangerecord(25790, 1, 1, 'One', 'Два', 'Three', '2011-02-16 12:02:09', 51, 'Четыре', 1, 6, 10.4, NULL, 1050); 1 record(s) was(were) updated in SECTOR ------ Результаты выполнения процедуры: ------ OUT = ID: 1 FullName: Два Запись обновлена ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 16:56 |
|
Помогите пожалуйста разобраться с хранимой процедурой в IBExpert.
|
|||
---|---|---|---|
#18+
denixxOUT = ID: 1 FullName: Два Запись обновлена А вот нахрена эти понты? Косплеишь Капитана Очевидность?.. И зачем вообще процедура там, где хватит одного запроса UPDATE OR INSERT?.. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 17:11 |
|
Помогите пожалуйста разобраться с хранимой процедурой в IBExpert.
|
|||
---|---|---|---|
#18+
плохо прочитал. для не-селективных процедур (вызываемых по execute) suspend не нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 17:11 |
|
Помогите пожалуйста разобраться с хранимой процедурой в IBExpert.
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovdenixxOUT = ID: 1 FullName: Два Запись обновлена А вот нахрена эти понты? Косплеишь Капитана Очевидность?.. Да, косплею КО ) Это потом используется для формирования лога, что происходит вообще в приложении. Я только изучаю Java и таково было решение при использовании MySQL. Dimitry SibiryakovИ зачем вообще процедура там, где хватит одного запроса UPDATE OR INSERT?.. Опять же, таково было решение для MySQL, решил сделать по образу и подобию, чтобы не сильно курочить уже готовый код в Java. Это не единственная процедура в БД, она выбрана, как наиболее простая, чтобы разобраться с логикой запуска. kdvплохо прочитал. для не-селективных процедур (вызываемых по execute) suspend не нужен. Убрал, спасибо. -=-=- Ну, теперь осталось только заставить Java подружиться с этой хранимой процедурой... Пока-что выбивает ошибку. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 17:49 |
|
Помогите пожалуйста разобраться с хранимой процедурой в IBExpert.
|
|||
---|---|---|---|
#18+
denixxЭто потом используется для формирования лога, что происходит вообще в приложении. А что, для того, чтобы записать строчку в лог, обязательно надо её получить с сервера? Прямо в тексте программы её написать Жаба не позволяет?.. denixxрешил сделать по образу и подобию, чтобы не сильно курочить уже готовый код в Java. Тебе всё равно придётся менять строчку вызова мускульной процедуры, так какая разница - написать вместо неё "EXECUTE PROCEDURE" или "UPDATE OR INSERT"?.. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 17:57 |
|
Помогите пожалуйста разобраться с хранимой процедурой в IBExpert.
|
|||
---|---|---|---|
#18+
denixxПока-что выбивает ошибку. здесь подобные выражения, без указания точного сообщения об ошибке, дают повод заподозрить низкий IQ. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 18:13 |
|
Помогите пожалуйста разобраться с хранимой процедурой в IBExpert.
|
|||
---|---|---|---|
#18+
kdv, Я просто тогда ещё даже не загуглил ошибку :) Надо же было самому разобраться. Нашел тут , что Malformed string = проблемы с кодировкой. Оказалось, что это у меня в Eclipse стоит в настройках сохранение всех файлов проекта в win1251, а надо UTF8. Поменял, перекодировал файл, и "русские" строки теперь прокатывают. Дальше - больше. Exception in thread "main" org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544569. Dynamic SQL Error SQL error code = -504 Invalid cursor reference Cursor is not open Код программы: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
Ожидаемое поведение программы: Выполняет запрос, выводит строчку "ID: 1 FullName: Два Запись обновлена" в консоль... Что-то нашел по этому эксепшену здесь , но пока не пойму, что мне делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 19:07 |
|
Помогите пожалуйста разобраться с хранимой процедурой в IBExpert.
|
|||
---|---|---|---|
#18+
denixxprstmt.getResultSet(); У EXECUTE PROCEDURE нет ResulSet-а. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 19:14 |
|
Помогите пожалуйста разобраться с хранимой процедурой в IBExpert.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, О. Даже так... А как же тогда вернуть из переменной текст? Я с такой задачей ещё не сталкивался. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 19:19 |
|
Помогите пожалуйста разобраться с хранимой процедурой в IBExpert.
|
|||
---|---|---|---|
#18+
denixxА как же тогда вернуть из переменной текст? То, что у неё на выходе не ResultSet, а скалярный вектор, тебя сбивает с толку? Почитай справку по JDBC. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 19:31 |
|
Помогите пожалуйста разобраться с хранимой процедурой в IBExpert.
|
|||
---|---|---|---|
#18+
denixxА как же тогда вернуть из переменной текст?Либо через Select from Proc, либо через выходные параметры после вызова Exec Proc. И прочитай, наконец, статью, ссылку на которую тебе уже дали. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 19:35 |
|
Помогите пожалуйста разобраться с хранимой процедурой в IBExpert.
|
|||
---|---|---|---|
#18+
http://www.ibase.ru/devinfo/sp_call.htm Код: plaintext 1. 2. 3.
Это, походу, Delphi? Как такое сделать на Java? Должно быть всё просто... Но что-то пока не доходит :( Не знаю, какой метод использовать в Java. В методах prstmt ничего полезного не вижу. Сам prstmt.execute(); возвращает boolean. Мне от него ни холодно, ни жарко. Подскажите плз, а то что-то не помогает мне гугл... А только наоборот, куда-то уводит в дебри. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 20:23 |
|
Помогите пожалуйста разобраться с хранимой процедурой в IBExpert.
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустамчерез выходные параметры после вызова Exec Proc. Интересует этот вариант. Такого я ещё не делал вообще. Гаджимурадов РустамИ прочитай, наконец, статью, ссылку на которую тебе уже дали. Статью почитал, там примеры для Delphi, как я понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 20:26 |
|
Помогите пожалуйста разобраться с хранимой процедурой в IBExpert.
|
|||
---|---|---|---|
#18+
denixxКак такое сделать на Java? Должно быть всё просто... Но что-то пока не доходит :( Не знаю, какой метод использовать в Java. В методах prstmt ничего полезного не вижу.Java тут никто не знает! (с) Задай вопрос в профильном форуме - помогут. Ищи что-то вроде prstmt.Get_Нужный_Тип ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 20:29 |
|
Помогите пожалуйста разобраться с хранимой процедурой в IBExpert.
|
|||
---|---|---|---|
#18+
denixxчто-то не помогает мне гугл... Выкинь свой гугль, попробуй мой: http://www.google.ru/#sclient=psy&hl=ru&newwindow=1&site=&source=hp&q=Java+JDBC+execute+procedure+Firebird&pbx=1&oq=Java+JDBC+execute+procedure+Firebird&aq=f&aqi=&aql=&gs_sm=e&gs_upl=6139l20548l0l21826l38l27l1l0l0l3l2117l22332l6-1.4.7.2l14l0&bav=on.2,or.r_gc.r_pw.&fp=89bff89e8f2573a0&biw=1011&bih=469 Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 20:30 |
|
Помогите пожалуйста разобраться с хранимой процедурой в IBExpert.
|
|||
---|---|---|---|
#18+
Нашёл, наконец! В мануале к JayBird на странице 47 была описана такая вещь, как CallableStatement: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Добавился ещё один вопрос в тексте запроса (15й), в этом месте и регистрируется выдаваемая переменная. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 22:59 |
|
Помогите пожалуйста разобраться с хранимой процедурой в IBExpert.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov пишет: DS> скалярный вектор Можно, я это запишу ? :) Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 09:34 |
|
Помогите пожалуйста разобраться с хранимой процедурой в IBExpert.
|
|||
---|---|---|---|
#18+
denixx, А если поискать по форуму Java, то можно найти готовый пример по работе с хранимыми процедурами, я когда то выкладывал. А так удачи, это только азы азов в Java. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 14:59 |
|
Помогите пожалуйста разобраться с хранимой процедурой в IBExpert.
|
|||
---|---|---|---|
#18+
AndreyUBудачи Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 16:12 |
|
Помогите пожалуйста разобраться с хранимой процедурой в IBExpert.
|
|||
---|---|---|---|
#18+
Что-то я опять не пойму, чего от меня хочет компилятор. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
Код: plaintext 1. 2. 3. 4.
Было через знак = Код: plaintext 1. 2. 3.
Пробовал ещё into в конец ставить, как на ibase написано: Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 16:36 |
|
Помогите пожалуйста разобраться с хранимой процедурой в IBExpert.
|
|||
---|---|---|---|
#18+
так писать нельзя. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 16:48 |
|
|
start [/forum/topic.php?fid=42&msg=37405418&tid=1599861]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
142ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 253ms |
0 / 0 |