|
Хранимая процедура в Oracle ???
|
|||
---|---|---|---|
#18+
Здравствуйте ! У меня следующая проблема - В MSSQLServer я в теле хранимой процедуре могу записать следующую строку SELECT * FROM TABLE01 и при вызове подобной процедуры получу содержимое таблицы. Пишу то же самое для хранимой процедуры в Oracle, компилятор начинает ругаться Что ему нужно еще INTO .... Подскажите, пожалуйста как надо оформить процедуру, чтобы нормально работало ! Заранее благодарен ! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2001, 20:17 |
|
Хранимая процедура в Oracle ???
|
|||
---|---|---|---|
#18+
В хранимой процедуре ORACLE простой запрос может возвращать ТОЛЬКО ОЛНУ СТРОКУ и ее результат в переменные через INTO. Если надо возвратить набор строк, то надо делать по этому запросу курсор. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2001, 07:47 |
|
Хранимая процедура в Oracle ???
|
|||
---|---|---|---|
#18+
Все логично. Запросы, написанные в процедуре в явном, чистом виде подразумевают ожнострочный SELECT (ну как обычно селектят чтото из таблицы DUAL) : DECLARE SysDate$ DATE; BEGIN ... SELECT SYSDATE+1 INTO SysDate$ FROM DUAL; ... END; Запрос же, который возвращает выборку, отличную от одной строки должен быть открыт в форме курсора: DECLARE DECLARE CURSOR MyCurrsor$ IS SELECT A, B FROM TABLE1; BEGIN .... OPEN MyCurrsor$; ... /* делее можно явно фетчить (FETCH) из курсора используя цикл LOOP-EXIT WHEN %NOTFOUND-END LOOP; либо используя FOR Cursor LOOP - END LOOP; (тогда OPEN не нужен) */ END; По этому в документации все написано - смотри раздел о PLS-SQL ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2001, 07:50 |
|
|
start [/forum/topic.php?fid=52&msg=32016817&tid=1993494]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 145ms |
0 / 0 |