Sergant82
Дата: 27.02.2007 14:42:26
Как поочередно обратиться ко всем элементам массива и что написать в return если функция должна вернуть тоже массив?
create or replace function ConvertSwiftMsg(resulttype in string, str_in in string) return ?????? is
Result ???????;
begin
declare
type mytype is table of varchar2(100);
tag_array mytype := mytype(':20:',':23B:',':32A:',':33B:',':50?:',':50:',
':51A:',':52?:',':53?:',':54?:',':55?:',
':56?:',':57?:',':59:',':59?:',':70:',
':71A:',':71F:', ':71G:',':72:',':77B:',':77T:');
i integer;
begin
i:=0;
loop
if tag_array
end loop
;
return(Result);
end ;
end ConvertSwiftMsg;
tru55
Дата: 27.02.2007 14:49:01
Как и всегда в подобных случаях...
Сначала определить тип, а затем уже на него ссылаться. Только учти, что если захочешь эту функция использовать в SQL (не в PL/SQL), то есть ограничения
Sergant82
Дата: 27.02.2007 15:41:20
А по подробнее можно что написать вместо знаков вопроса
andrey_anonymous
Дата: 27.02.2007 15:45:01
| Sergant82 |
| А по подробнее можно что написать вместо знаков вопроса |
имя задекларированного типа.
Задекларированного ВНЕ данной функции (т.е. в пакете или SQL Type)
Sergant82
Дата: 28.02.2007 09:29:15
create or replace function ConvertSwiftMsg(resulttype in string, str_in in string) return varchar2 is
Result varchar2(1000);
begin
declare
type mytype is table of varchar2(100) not null;
tag_array mytype := mytype(':20:',':23B:',':32A:',':33B:',':50?:',':50:',
':51A:',':52?:',':53?:',':54?:',':55?:',
':56?:',':57?:',':59:',':59?:',':70:',
':71A:',':71F:', ':71G:',':72:',':77B:',':77T:');
i integer;
begin
select count(*) into i from tag_array;
return(Result);
end ;
end ConvertSwiftMsg;
Выдает что нет таkой таблицы tag_array. Что не так?
10053
Дата: 28.02.2007 10:44:28
type mytype is table of varchar2(100) not null;
это должно быт ьвне функции - либо в пакете, либо объявите как тип с помощью create type
10053
Дата: 28.02.2007 10:46:42
| 10053 |
type mytype is table of varchar2(100) not null; это должно быт ьвне функции - либо в пакете, либо объявите как тип с помощью create type |
виноват, спросонья попутал
конкретно там не так то, что нельзя обращаться к массиву как к таблице
я
Дата: 28.02.2007 10:47:20
for i in tag_array.first .. tag_array.last loop
dbms_output.put_line(tag_array(i));
end loop;
или просто
dbms_output.put_line(tag_array.last);
Jannny
Дата: 28.02.2007 10:47:33
| Sergant82 |
| Выдает что нет таkой таблицы tag_array. Что не так? |
Да все не так. Вы предыдущую ноту читали? Как Вы для себя понимаете слово "ВНЕ"? Не говоря об остальном. Перед использованием синтаксиса стоит о нем почитать, разве нет? :)
ЗЫ: И зачем Вы "насилуете" (уж простите за выражение) SQL:
tag_array.count
Sergant82
Дата: 28.02.2007 10:52:53
Ну хоть один дельный ответ. Спасибо за
for i in tag_array.first .. tag_array.last loop
dbms_output.put_line(tag_array(i));
end loop;
или просто
dbms_output.put_line(tag_array.last);