- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
CREATE OR REPLACE FUNCTION "GET_SOTR_FULL_NAME" (sotr_id in number)
RETURN varchar2 IS
cursor surname (sotr_id number)
is
select fc_fam from tsotr
where tsotr.fk_id=sotr_id;
cursor name (sotr_id number)
is
select fc_name from tsotr
where tsotr.fk_id=sotr_id;
cursor patronym (sotr_id number)
is
select fc_otch from tsotr
where tsotr.fk_id=sotr_id;
fio varchar2(90);
fam varchar2(30);
im varchar2(30);
otch varchar2(30);
BEGIN
open surname (sotr_id);
fetch surname into fam;
close surname;
open name (sotr_id);
fetch name into im;
close name;
open patronym (sotr_id);
fetch patronym into otch;
close patronym;
fio:=fam||' '||im||' '||otch;
return fio;
END;
wvxvw 23.06.2014 16:59 # 0
bormand 23.06.2014 17:06 # 0
defecate-plusplus 23.06.2014 17:09 # 0
bormand 23.06.2014 17:27 # +1
P.S. Почему латинских?
P.P.S. 32 символа, имя не влезло.
defecate-plusplus 23.06.2014 17:40 # +1
альтернативы:
nvarchar2(30) - строго юникодная строка
или varchar2(30 char) - 30 символов в установленной кодировке БД (обычно никто не играет с огнем и ставит utf)
defecate-plusplus 23.06.2014 17:45 # 0
селф-фикс: регулируется параметром NLS_LENGTH_SEMANTICS, который по умолчанию byte
bormand 23.06.2014 18:20 # 0
Кстати, а почему он varchar2? Первая версия варчара оказалась неудачной?
defecate-plusplus 23.06.2014 18:25 # +2
к слову, varchar давно синоним для varchar2, но все как-то не осмеливаются перейти на человеческое название
и сам оракл почему-то не советует
The VARCHAR datatype is synonymous with the VARCHAR2 datatype. To avoid possible changes in behavior, always use the VARCHAR2 datatype to store variable-length character strings.
bormand 23.06.2014 18:33 # 0
Lokich 24.06.2014 11:17 # 0
kegdan 24.06.2014 12:41 # −1
bormand 23.06.2014 18:36 # 0
Зато в мускуле по-умолчанию только latin1_swedish_ci, только хардкор... Наверное каждый, кто юзал мускуль, на эту хрень хоть раз налетал, замечая, что "как-то оно не так сортирует русские буквы", а потом матерился и перезаливал базу...
defecate-plusplus 23.06.2014 19:00 # 0
bliznezz 23.06.2014 19:45 # 0
bormand 23.06.2014 17:30 # +1
Vince 23.06.2014 18:59 # +4
eth0 23.06.2014 20:08 # +1
defecate-plusplus 23.06.2014 21:07 # 0
очевидно, чукча не знал, как из одного курсора сразу в три переменных зафетчить, что можно склеить строки прямо в селекте
да и смысл в хранимой процедуре тут, она ничего особенного не делает - только лишний раз контекст переключать
bliznezz 24.06.2014 08:18 # +1
kegdan 24.06.2014 11:14 # +3
Lokich 24.06.2014 12:59 # +4
что-то типа этого решило бы все его проблемы с производительностью
bormand 24.06.2014 13:03 # +1
Lokich 24.06.2014 13:56 # 0
eth0 24.06.2014 19:49 # 0