выполнить pl/sql скрипт

Модератор: Модераторы

выполнить pl/sql скрипт

Сообщение ronin » 07.08.2015 18:55:31

Всем привет, не получается никак выполнить pl/sql скрипт oracle, что уже только не пробовал, через ExecSQL TZQuery, через Execute TZSQLProcessor, выдаёт разного рода ошибки, избавиться от которых не получается

например через TZQuery:

Код: Выделить всё
vQuery.SQL.Text := 'begin :v := 10; end;';
vQuery.Params.CreateParam(ftInteger, ':v', ptOutput); //здесь пробовал и просто v без двоеточия писать
vQuery.ExecSQL;


выдаёт ошибку ORA-01008: not all variables bound
как связать переменную так и не понял, пытался без создания переменной сразу по имени обращаться, сделав её ptInputOutput и задавая значение перед выполнением скрипта

через TZSQLProcessor пытался выполнять там постоянно вылетает ошибка

PLS-00103: Encountered the symbol "" when expecting one of the following:
:= . ( @ % ; not null range default character


на последнем символе скрипта, что бы там не ставил, ; или /
настраивал Delimiter не помогает...

кто в теме объясните пожалуйста как можно выполнить скрипт (какой компонент и как его настроить правильно) чтобы в нём были возвращаемые параметры, т.е. мне надо получить результат некоторых системных функций оракула из этого скрипта

пример скрипта:

Код: Выделить всё
declare
v number;
begin
v := 10;
:par1 := v;
end;


Использую последнюю версию CodeTyphon (fpc 3.1.1/lazarus svn 49552), zeos - 7.2.0.20, oracle 10.2.0.1.0 express edition
ronin
постоялец
 
Сообщения: 174
Зарегистрирован: 27.01.2010 00:14:46

Re: выполнить pl/sql скрипт

Сообщение grot » 09.08.2015 09:55:39

Забудьте про "параметры" !

А результаты простого запроса можете получить ?
Если да, то "нажимайте" :
select fun1(), fun2, ...funN() from dual;

надеюсь, что не надо говорить, что вместо
fun1(), fun2, ...funN()
надо поставить то, что хочется ...
grot
новенький
 
Сообщения: 79
Зарегистрирован: 13.02.2010 16:33:03

Re: выполнить pl/sql скрипт

Сообщение ronin » 09.08.2015 15:00:19

1. мне нужен механизм выполнения именно pl/sql кода, это часть функционала программы, sql запросами его не заменить
2. Забудьте про "параметры" ! - надеюсь не надо объяснять о связываемых переменных oracle и для чего они используются

запросы отрабатывают отлично, даже простой pl/sql код работает через TZQuery, но что то чуть сложнее и сыпятся ошибки, с которыми разобраться не получается, в исходниках zeos немного поковырялся не смог сам понять в чём проблемы, но самое интересное даже самый простой pl/sql код в TZQuery не работает без добавления символа окончания строки (#0) к sql скрипта, нашёл оформленный и закрытый баг по этой теме, проверил исходники патч уже применён, но без символа скрипт не отрабатывает вообще...

складывается ощущение что в этом плане zeos не удовлетворит мои потребности, попробовал в тестовом приложении на C# с использованием ODAC для NET от oracle, скрипт отрабатывает и возвращает параметры как надо, никаких проблем с руганью на параметры или что не тот символ... три месяца подготовки проекта к работе с zeos по ходу потеряны зря, уже почти разочаровался... чувствую прийдётся переходить на visual studio, хотя хотел конечно всё реализовать в любимом lazarus'е
ronin
постоялец
 
Сообщения: 174
Зарегистрирован: 27.01.2010 00:14:46

Re: выполнить pl/sql скрипт

Сообщение Ism » 09.08.2015 16:54:59

Скорее всего синтаксис ваших запросов конфликтует с синтаксисом переменных в компонентах
Есть функция ExecuteDirect, возможно там нет фильтра синтаксиса
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: выполнить pl/sql скрипт

Сообщение ronin » 09.08.2015 17:09:59

через ExecuteDirect те же ошибки, и как я понял TZConnection параметров не поддерживает, мне же нужен гибкий механизм выполнения pl/sql кода, как с параметрами так и без
если я правильно понимаю Zeos работает с oci.dll, если так, то я не понимаю почему через Oracle.DataAccess.dll в C# у меня аналогичный скрипт работает... возможно настройки компонентов какие то неправильные у меня, или ещё что...

в принципе наверное вопрос закрыт, протестировал всё необходимое для проекта в Visual Studio, решил переносить проект туда, очень уж много в lazarus костылей и недоработок, хотя я с ним уже несколько лет работаю, есть даже реализованный проект, но с проблемами и недоработками постоянно приходится возиться, эта проблема наверное была последней каплей...
ronin
постоялец
 
Сообщения: 174
Зарегистрирован: 27.01.2010 00:14:46

Re: выполнить pl/sql скрипт

Сообщение Ism » 09.08.2015 17:42:45

Есть https://www.devart.com/odac/download.html
Там все по феншую
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: выполнить pl/sql скрипт

Сообщение ronin » 09.08.2015 17:51:48

нужен опенсорс, это принципиально, потому что проект делаю опенсорс
ronin
постоялец
 
Сообщения: 174
Зарегистрирован: 27.01.2010 00:14:46

Re: выполнить pl/sql скрипт

Сообщение Ism » 09.08.2015 18:59:17

Тогда можно оттрассировать запросы к базе wireshark и посмотреть что по факту передается в базу, иногда выясняются интересные вещи
На худой конец работать с dll напрямую
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: выполнить pl/sql скрипт

Сообщение ronin » 09.08.2015 22:53:47

смотрел утилитой OraTracer, pl/sql код в порядке, в Oracle Sql Developer выполняется... в C# очень понравилась Oracle Developer Tools for Visual Studio, реализовано удобнее чем работать с dll, да и изобретать очередной велосипед некогда
ronin
постоялец
 
Сообщения: 174
Зарегистрирован: 27.01.2010 00:14:46


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru