Гость
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / SyntaxFromSQL и Storedprocedure на Oracle не работает. / 9 сообщений из 9, страница 1 из 1
07.07.2012, 13:56
    #37870088
Zaharp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SyntaxFromSQL и Storedprocedure на Oracle не работает.
Добрый день,

Столкнулся с проблемой, никак не могу понять, подскажите, что не так?
Пытаюсь создать динамически датавинду на основе хранимой процедуры, используя функцию 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
08.07.2012, 19:37
    #37870737
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SyntaxFromSQL и Storedprocedure на Oracle не работает.
Процедура должна возвращать ссылку на курсор (ref cursor). У вас так написано?
...
Рейтинг: 0 / 0
09.07.2012, 12:26
    #37871439
Zaharp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SyntaxFromSQL и Storedprocedure на Oracle не работает.
Да, она возвращает курсор.

Вот текст процедуры на 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
09.07.2012, 14:50
    #37871701
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SyntaxFromSQL и Storedprocedure на Oracle не работает.
RTFM
Почитайте
...
Рейтинг: 0 / 0
09.07.2012, 14:54
    #37871710
PL99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SyntaxFromSQL и Storedprocedure на Oracle не работает.
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
09.07.2012, 18:46
    #37872109
Zaharp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SyntaxFromSQL и Storedprocedure на Oracle не работает.
Действительно работает,

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


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