|
|
|
SQLEXEC()
|
|||
|---|---|---|---|
|
#18+
Как вызвать хранимую процедуру/функцию из БД Oracle Пишу ?SQLEXEC(nConnect,"BEGIN Veri_PK(); END;") Возвращает: Connectivity error: ORA-00900: неверно предложение на языке SQL Пишу ?SQLEXEC(nConnect,"{call Verni_PK(1)}") Возвращает: Connectivity error: ORA-06550: Строка 1, столбец 7: PLS-00221: 'VERNI_PK' не является процедурой или не определена ORA-06550: Строка 1, столбец 7: PL/SQL: Statement ignored Как эту функцию вызвать?!?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 13:58:26 |
|
||
|
SQLEXEC()
|
|||
|---|---|---|---|
|
#18+
?SQLEXEC(nConnect,"{call Verni_PK 1}") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 14:03:14 |
|
||
|
SQLEXEC()
|
|||
|---|---|---|---|
|
#18+
на SQLEXEC(nConnect,"{call Verni_PK 1}") он мне ответил: Connectivity error: ORA-06550: Строка 1, столбец 16: PLS-00103: Встретился символ "1" в то время как ожидалось одно из следующих: := . ( @ % ; Символ ":=" заменен на "1", чтобы можно было продолжать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 14:13:28 |
|
||
|
SQLEXEC()
|
|||
|---|---|---|---|
|
#18+
Recordid = '540' Sur = 'Фамилия' Nam = 'Имя' cSP = "{call MySchema.MySP(?Recordid, ?Sur, ?Nam)}" k = SQLExec(gnConnHandle, cSP) IF K <> 1 = MESSAGEBOX('Xранимая процедура ' + cSP + ' не выполнилась!!!!', 48, 'Сообщение об ощибке') ENDIF Я меня так работает и так тоже: cSP = "BEGIN MySchema.MySP(?Recordid, ?Sur, ?Nam) ; END;" (подсказал YuriWhite) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 15:39:52 |
|
||
|
SQLEXEC()
|
|||
|---|---|---|---|
|
#18+
Hi Maltsev Max! Видимо начудил с именем (кстати у тебя в сообщении 2 разных имени указано), или с тем, что коннектищься к одной схеме, а процедуру пытаешься вызвать из другой схемы (не указывая явно имя схемы, ну и соответственно у тебя нет глобального синонима на эту процедуру). Может также быть вариант что не хватает каких-то прав... Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2005, 04:35:27 |
|
||
|
SQLEXEC()
|
|||
|---|---|---|---|
|
#18+
По немногу начинаю разбираться ... Дело в том, что VERNI_PK -- функция, которая возвращает значение. Если я напишу Код: plaintext 1. 2. Как мне его поиметь ?!? :-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2005, 09:18:26 |
|
||
|
SQLEXEC()
|
|||
|---|---|---|---|
|
#18+
авторКак мне его поиметь ?!? :-)) иметь что попало это извращение.... а вообще обычно результат находят в курсоре SQLResault по умолчанию если не ошибся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2005, 09:43:52 |
|
||
|
SQLEXEC()
|
|||
|---|---|---|---|
|
#18+
leaf авторКак мне его поиметь ?!? :-)) иметь что попало это извращение.... а вообще обычно результат находят в курсоре SQLResault по умолчанию если не ошибся Это я знаю, но в данной конструкции результат работы функции(число) находится "на сервере". Как мне его выкинуть "Наружу" ?!? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2005, 10:55:20 |
|
||
|
SQLEXEC()
|
|||
|---|---|---|---|
|
#18+
специально для шустрых... SQLEXEC(nConnectionHandle, [cSQLCommand, [cCursorName] ]) cCursorName Specifies the name of the Visual FoxPro cursor to which the result set is sent. If you don't include a cursor name, Visual FoxPro uses the default name SQLRESULT . Example = SQLSETPROP(gnConnHandle, 'asynchronous', .F.) = SQLEXEC(gnConnHandle, 'SELECT * FROM authors', 'MyCursor' ) select MyCursor brow normal ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2005, 12:06:12 |
|
||
|
SQLEXEC()
|
|||
|---|---|---|---|
|
#18+
p.s. поезд отходит с третьей и четвертой рельсы .... хелп его для чтения написали блин................. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2005, 12:07:57 |
|
||
|
SQLEXEC()
|
|||
|---|---|---|---|
|
#18+
Хорошо. Я повторю еще раз. При вызове хранимой функции: Код: plaintext 1. 2. 3. вываливается ошибка: Код: plaintext 1. 2. 3. 4. Если же я напишу: Код: plaintext 1. 2. Никакая ошибка не вываливается, K=1, но и Used("SqlResilt")=.F. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2005, 14:19:03 |
|
||
|
SQLEXEC()
|
|||
|---|---|---|---|
|
#18+
авторUsed("SqlResilt")=.F. к чему так напрягаться просто внимательно следите за руками .... default name SQLRESULT . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2005, 14:54:43 |
|
||
|
SQLEXEC()
|
|||
|---|---|---|---|
|
#18+
Блин, очепятался. Конечно sqlResUlt Но я делал проще, писал SET ... И в окошке Data Session пусто ... P. S. Вот прикопался... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2005, 15:02:32 |
|
||
|
SQLEXEC()
|
|||
|---|---|---|---|
|
#18+
cStringAsOutPutParameterofMySP = space(1000) cSelect = "BEGIN MySchema.MySP(?SomeInputPrarameter, ?lnAmount, ?@cStringAsOutPutParameterofMySP); END;" lnResult = SQLEXEC(lnConnHandle, cSelect) = messagebox(cStringAsOutPutParameterofMySP,48,'Нате') (Подсказал YuriWhite) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2005, 17:12:39 |
|
||
|
SQLEXEC()
|
|||
|---|---|---|---|
|
#18+
если я верно понял: VERNI_PK -- функция, которая возвращает значение то вызывать ее надо так: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2005, 17:25:09 |
|
||
|
SQLEXEC()
|
|||
|---|---|---|---|
|
#18+
Sorry надо так: Код: plaintext 1. 2. 3. значок @ - выходной параметр ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2005, 17:27:05 |
|
||
|
SQLEXEC()
|
|||
|---|---|---|---|
|
#18+
Hi leaf! Вот читаю и удивляюсь - или ты вопроса совершенно не понял, или просто не зная ответа пишешь абы что :( Не возвращается РЕЗУЛЬТАТ работы ФУНКЦИИ через резалтсет из Oracle - и соответственно никакого курсора на стороне фокса не образуется. В этом и проблема. 2 Maltsev Max В Oracle есть существенная разница между процедурой и функций. Также есть разница между Output параметром (он хоть и Output - но ПАРАМЕТР) и возвращаемым значением функции. Для простого случая наверное хватит банального запроса "SELECT MyFunction(?Param1, ?Param2) AS RetVal FROM dual" - это создаст курсор на стороне фокса с единственным полем RetVal. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2005, 01:08:59 |
|
||
|
SQLEXEC()
|
|||
|---|---|---|---|
|
#18+
Igor Korolyov 2 Maltsev Max В Oracle есть существенная разница между процедурой и функций. Также есть разница между Output параметром (он хоть и Output - но ПАРАМЕТР) и возвращаемым значением функции. Для простого случая наверное хватит банального запроса "SELECT MyFunction(?Param1, ?Param2) AS RetVal FROM dual" - это создаст курсор на стороне фокса с единственным полем RetVal. Posted via ActualForum NNTP Server 1.3 Igor Korolyov, спасибо. Показал нужное направление. С селектом ничего не получилось, скорее всего из-за того, что в функции стоит Commit. Но с Output параметром все заработало как надо. Но так, как функция не моя, и я не могу менять ее интерфейс, вопрос:Может-ли параметр, обновременно быть OutPut и Input ?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2005, 06:58:39 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33315075&tid=1593305]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
180ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 228ms |
| total: | 516ms |

| 0 / 0 |
