powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / SyntaxFromSQL и Storedprocedure на Oracle не работает.
9 сообщений из 9, страница 1 из 1
SyntaxFromSQL и Storedprocedure на Oracle не работает.
    #37870088
Zaharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,

Столкнулся с проблемой, никак не могу понять, подскажите, что не так?
Пытаюсь создать динамически датавинду на основе хранимой процедуры, используя функцию SyntaxFromSQL.
Процедура всегда возвращает курсор.

Bulder 9.0.3 build 8716, База Oracle 11.2.0.1.0
Синтаксис на оракле использую такой: 'EXECUTE myProc(1)'. В ответ получаю ошибку

> ORA-06550: line 1, column 16:
> PLS-00801: internal error [22503]
> ORA-06550: line 1, column 16:
> PL/SQL: Statement ignored


Выходит на Оракле это не заработает?
...
Рейтинг: 0 / 0
SyntaxFromSQL и Storedprocedure на Oracle не работает.
    #37870737
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Процедура должна возвращать ссылку на курсор (ref cursor). У вас так написано?
...
Рейтинг: 0 / 0
SyntaxFromSQL и Storedprocedure на Oracle не работает.
    #37871439
Zaharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, она возвращает курсор.

Вот текст процедуры на Oracle:
CREATE OR REPLACE PROCEDURE SCHEMA1.zdp_test (
p_none IN NUMBER
, p_ntwo IN NUMBER := NULL
, p_refCursor OUT SYS_REFCURSOR
)
AS

BEGIN

OPEN p_refCursor FOR
SELECT 1,
2,
p_none,
NVL(p_ntwo, 0)
FROM dual;

END;
/



В билдере код такой:
ls_SqlSyntax = 'EXECUTE ZDP_TEST (p_none =1, p_ntwo = 2)'
ls_DWSyntax = SQLCA.SyntaxFromSQL (ls_SqlSyntax, '', ls_err)


Ошибка получается такой:
ORA-06550: line 1, column 16:
PLS-00801: internal error [22503]
ORA-06550: line 1, column 16:
PL/SQL: Statement ignored
EXECUTE ZDP_TEST (p_none =1, p_ntwo = 2)
...
Рейтинг: 0 / 0
SyntaxFromSQL и Storedprocedure на Oracle не работает.
    #37871701
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RTFM
Почитайте
...
Рейтинг: 0 / 0
SyntaxFromSQL и Storedprocedure на Oracle не работает.
    #37871710
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZaharpДа, она возвращает курсор.

Вот текст процедуры на Oracle:
CREATE OR REPLACE PROCEDURE SCHEMA1.zdp_test (
p_none IN NUMBER
, p_ntwo IN NUMBER := NULL
, p_refCursor OUT SYS_REFCURSOR
)
AS

BEGIN

OPEN p_refCursor FOR
SELECT 1,
2,
p_none,
NVL(p_ntwo, 0)
FROM dual;

END;
/



В билдере код такой:
ls_SqlSyntax = 'EXECUTE ZDP_TEST (p_none =1, p_ntwo = 2)'
ls_DWSyntax = SQLCA.SyntaxFromSQL (ls_SqlSyntax, '', ls_err)


Ошибка получается такой:
ORA-06550: line 1, column 16:
PLS-00801: internal error [22503]
ORA-06550: line 1, column 16:
PL/SQL: Statement ignored
EXECUTE ZDP_TEST (p_none =1, p_ntwo = 2)
Ввиду отсутствия под рукой указанных версий, попробовал на PB 7.0.3 и Oracle 9.2
Код: vbnet
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.
SQLCA.DBMS = "O84 ORACLE 8.0.4"
SQLCA.LogPass = "***"
SQLCA.ServerName = "***"
SQLCA.LogId = "***"
SQLCA.AutoCommit = False
SQLCA.DBParm = "CommitOnDisconnect='No',PBDBMS=0"

connect;

if sqlca.sqlcode = 0 then
	string ls_Sql, ls_Syntax, ls_Err
	datastore lds
	lds = create datastore
	lds.settransObject (sqlca)
	decimal{0} P_NONE, P_NTWO
	ls_Sql = "1 EXECUTE ADVANTUM.ZDP_TEST;0 P_NONE = 1, P_NTWO = null"
	ls_Syntax = SQLCA.SyntaxFromSQL(ls_sql, "", ls_err)
	if ls_err <> "" then
		messagebox ("", ls_err)
	else
		messagebox ("", ls_Syntax )
	end if
	
else
	messagebox("", sqlca.sqlErrText)
end if;



Результат:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
release 7;
datawindow(units=0 timer_interval=0 color=1073741824 processing=0 print.margin.bottom=0 print.margin.left=0 print.margin.right=0 print.margin.top=0 print.preview.buttons=no )
table(
	column=(type=decimal(5) updatewhereclause = yes name=compute_0001  dbname="compute_0001")
	column=(type=decimal(5) updatewhereclause = yes name=compute_0002  dbname="compute_0002")
	column=(type=decimal(5) updatewhereclause = yes name=compute_0003  dbname="compute_0003")
	column=(type=decimal(5) updatewhereclause = yes name=compute_0004  dbname="compute_0004")
	procedure="1 EXECUTE ADVANTUM.SBERTEX_TEST;0 P_NONE = 1, P_NTWO = null")
header(height=60)
detail(height=72)
column(band=detail id=1 x="5" y="4" height="64" width="274" alignment="1" font.face="MS Sans Serif" font.height="-8" font.weight="400" font.charset="0" font.pitch="2" font.family="2" font.underline="0" font.italic="0" border="0" color="0" background.mode="1" background.color="0"  edit.autoselect=yes edit.autohscroll=yes edit.autovscroll=no edit.focusrectangle=no )
text(band=header text="1" x="5" y="4" height="52" width="274" font.face="MS Sans Serif" font.height="-8" font.weight="400" font.charset="0" font.pitch="2" font.family="2" font.underline="0" font.italic="0" border="0" color="0" background.mode="1" background.color="0" alignment="2"  name=compute_0001_t )
column(band=detail id=2 x="284" y="4" height="64" width="274" alignment="1" font.face="MS Sans Serif" font.height="-8" font.weight="400" font.charset="0" font.pitch="2" font.family="2" font.underline="0" font.italic="0" border="0" color="0" background.mode="1" background.color="0"  edit.autoselect=yes edit.autohscroll=yes edit.autovscroll=no edit.focusrectangle=no )
text(band=header text="2" x="284" y="4" height="52" width="274" font.face="MS Sans Serif" font.height="-8" font.weight="400" font.charset="0" font.pitch="2" font.family="2" font.underline="0" font.italic="0" border="0" color="0" background.mode="1" background.color="0" alignment="2"  name=compute_0002_t )
column(band=detail id=3 x="563" y="4" height="64" width="274" alignment="1" font.face="MS Sans Serif" font.height="-8" font.weight="400" font.charset="0" font.pitch="2" font.family="2" font.underline="0" font.italic="0" border="0" color="0" background.mode="1" background.color="0"  edit.autoselect=yes edit.autohscroll=yes edit.autovscroll=no edit.focusrectangle=no )
text(band=header text=":b2" x="563" y="4" height="52" width="274" font.face="MS Sans Serif" font.height="-8" font.weight="400" font.charset="0" font.pitch="2" font.family="2" font.underline="0" font.italic="0" border="0" color="0" background.mode="1" background.color="0" alignment="2"  name=compute_0003_t )
column(band=detail id=4 x="842" y="4" height="64" width="274" alignment="1" font.face="MS Sans Serif" font.height="-8" font.weight="400" font.charset="0" font.pitch="2" font.family="2" font.underline="0" font.italic="0" border="0" color="0" background.mode="1" background.color="0"  edit.autoselect=yes edit.autohscroll=yes edit.autovscroll=no edit.focusrectangle=no )
text(band=header text="Nvl(:b1,0)" x="842" y="4" height="52" width="274" font.face="MS Sans Serif" font.height="-8" font.weight="400" font.charset="0" font.pitch="2" font.family="2" font.underline="0" font.italic="0" border="0" color="0" background.mode="1" background.color="0" alignment="2"  name=compute_0004_t )
htmltable(border="0" cellpadding="1" cellspacing="1" generatecss="no" nowrap="no")


Если допускается изменение процедуры,
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE OR REPLACE PROCEDURE SBERTEX_TEST 
(
p_refCursor OUT SYS_REFCURSOR
,p_none IN NUMBER
, p_ntwo IN NUMBER default null --необязательные параметры в самом конце
)
AS

BEGIN
...

то можно выполнять ее вызов без параметра по умолчанию
Код: sql
1.
2.
3.
	
ls_Sql = "1 EXECUTE ADVANTUM.ZDP_TEST;0 P_NONE = 1"
ls_Syntax = SQLCA.SyntaxFromSQL(ls_sql, "", ls_err)



Попробуйте.

Модератор: Собщение отредактировано по просьбе автора
...
Рейтинг: 0 / 0
SyntaxFromSQL и Storedprocedure на Oracle не работает.
    #37872109
Zaharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Действительно работает,

Спасибо ! :)
...
Рейтинг: 0 / 0
SyntaxFromSQL и Storedprocedure на Oracle не работает.
    #37872557
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел, я только одного не понял: Адвантум или Сбертех? :)
...
Рейтинг: 0 / 0
SyntaxFromSQL и Storedprocedure на Oracle не работает.
    #37872603
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spas2001,
AFAIK, топикстартер из сбертеха, а тестовая схема там, где мне сейчас приходится находиться, называется advantum :-)
Все-таки, к нормальному виду сообщение не привел, прошу прощения у участников.
...
Рейтинг: 0 / 0
SyntaxFromSQL и Storedprocedure на Oracle не работает.
    #37872640
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я уж думал вы туда перешли:)
Сейчас приглашения только сыпятся, жаль что я не в Москве, можно было бы рассмотреть пару вариантов
Сорри за офтоп
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / SyntaxFromSQL и Storedprocedure на Oracle не работает.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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