Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2011, 22:52   #1
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию Как написать такую функцию в PL/SQL

Как вычислить страну с помощью функции в PL/SQL на основе марки машины?
REztor вне форума Ответить с цитированием
Старый 25.10.2011, 10:44   #2
Neymexa
Proffesional
Форумчанин
 
Аватар для Neymexa
 
Регистрация: 18.11.2008
Сообщений: 417
По умолчанию

Цитата:
Сообщение от REztor Посмотреть сообщение
Как вычислить страну с помощью функции в PL/SQL на основе марки машины?
Сначала опиши все подробно. Например какая СУБД.
Структура таблиц. Связи между ними.
Судя по теме СУБД ORACLE.
Какая версия ? 9,10,11 .?
standart edition or expres?
и так далее
О, степь родимая, как я скучаю по тебе...
Neymexa вне форума Ответить с цитированием
Старый 25.10.2011, 11:29   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сначала опиши все подробно. Например какая СУБД.
насколько я разбираюсь "в колбасных обрезках" - PL/SQL - означает, что речь идёт об Oracle.

а вот подробностей о структурах данных (таблицах) реально не хватает.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.10.2011, 12:48   #4
Neymexa
Proffesional
Форумчанин
 
Аватар для Neymexa
 
Регистрация: 18.11.2008
Сообщений: 417
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
насколько я разбираюсь "в колбасных обрезках" - PL/SQL - означает, что речь идёт об Oracle.

а вот подробностей о структурах данных (таблицах) реально не хватает.
Serge_Bliznykov читайте повнимательней.
Ниже я написал - Судя по теме СУБД ORACLE.
О, степь родимая, как я скучаю по тебе...
Neymexa вне форума Ответить с цитированием
Старый 25.10.2011, 13:56   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Serge_Bliznykov читайте повнимательней.
Ниже я написал - Судя по теме СУБД ORACLE.
я Вас обидел? Ну, тогда, извините...

да внимательно я читал, внимательно.
Только какая разница, 8,9 или 10 там версия и XE или полная?
Не думаю, что для создания простейшей функции это принципиально...
А вот структуры данных - это важно...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.10.2011, 14:14   #6
Neymexa
Proffesional
Форумчанин
 
Аватар для Neymexa
 
Регистрация: 18.11.2008
Сообщений: 417
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
я Вас обидел? Ну, тогда, извините...

да внимательно я читал, внимательно.
Только какая разница, 8,9 или 10 там версия и XE или полная?
Не думаю, что для создания простейшей функции это принципиально...
А вот структуры данных - это важно...
нет. не обидел. Я не обижаюсь и не ищу во всем провокации.
Что на счет БД то я просто перестраховываюсь (мало ли что нужно автору темы, судя по его подробному описанию проблемы)

Да согласен нет разницы в версиях БД.
p.s. давай не будем больше флудить...
О, степь родимая, как я скучаю по тебе...
Neymexa вне форума Ответить с цитированием
Старый 28.10.2011, 18:21   #7
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию

Написал функцию, но не совсем правильно, можете исправить чтобы, работала?
Код:
create or replace function  vin case substr(vin,1,2) 
begin
when 'AA','AB','AC','AD','AE','AF','AG','AH' then return 'South Africa';
when 'AJ','AK','AL','AM','AN' then return 'Ivory Coast';
when 'AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ','A1','A2','A3','A4','A5','A6','A7','A8','A9','A0' then return 'not assigned';
when 'BA','BB','BC','BD','BE' then return 'Angola';
when 'BF','BG','BH','BI','BJ','BK' then return 'Kenya';
when 'BL','BM','BN','BO','BP','BQ','BR' then return 'Tanzania';
when 'BS','BT','BU','BV','BW','BX','BY','BZ','B1','B2','B3','B4','B5','B6','B7','B8','B9','B0' then return 'not assigned';
when 'CA','CB','CC','CD','CE' then return 'Benin';
when 'CF','CG','CH','CI','CJ','CK' then return 'Madagascar';
when 'CL','CM','CN','CO','CP','CQ','CR' then return 'Tunisia';
when 'CS','CT','CU','CV','CW','CX','CY','CZ','C1','C2','C3','C4','C5','C6','C7','C8','C9','C0' then return 'not assigned';
when 'DA','DB','DC','DD','DE' then return 'Egypt';
when 'DF','DG','DH','DI','DJ','DK' then return 'Morocco';
when 'DL','DM','DN','DO','DP','DQ','DR' then return 'Zambia';
when 'DS','DT','DU','DV','DW','DX','DY','DZ','D1','D2','D3','D4','D5','D6','D7','D8','D9','D0' then return 'not assigned';
when 'EA','EB','EC','ED','EE' then return 'Ethiopia';
when 'EF','EG','EH','EI','EJ','EK' then return 'Mozambique';
when 'EL','EM','EN','EO','EP','EQ','ER','ES','ET','EU','EV','EW','EX','EY','EZ','E1','E2','E3','E4','E5','E6','E7','E8','E9','E0' then return 'not assigned';
when 'FA','FB','FC','FD','FE' then return 'Ghana';
when 'FF','FG','FH','FI','FJ','FK' then return 'Nigeria';
when 'FL','FM','FN','FO','FP','FQ','FR','FS','FT','FU','FV','FW','FX','FY','FZ','F1','F2','F3','F4','F5','F6','F7','F8','F9','F0' then return 'not assigned';
when 'GA','GB','GC','GD','GE','GF','GG','GH','GI','GJ','GK','GL','GM','GN','GO','GP','GQ','GR','GS','GT','GU','GV','GW','GX','GY','GZ','G1','G2','G3','G4','G5','G6','G7','G8','G9','G0' then return 'not assigned';
when 'HA','HB','HC','HD','HE','HF','HG','HH','HI','HJ','HK','HL','HM','HN','HO','HP','HQ','HR','HS','HT','HU','HV','HW','HX','HY','HZ','H1','H2','H3','H4','H5','H6','H7','H8','H9','H0' then return 'not assigned';
when 'JA','JB','JC','JD','JE','JF','JG','JH','JI','JJ','JK','JL','JM','JN','JO','JP','JQ','JR','JS','JT' then return 'Japan';
when 'KA','KB','KC','KD','KE' then return 'Sri Lanka';
when 'KF','KG','KH','KI','KJ','KK' then return 'Israel';
when 'KL','KM','KN','KO','KP','KQ','KR' then return 'Korea (South)';
when 'KS','KT','KU','KV','KW','KX','KY','KZ','K1','K2','K3','K4','K5','K6','K7','K8','K9','K0' then return 'not assigned';
when 'LA','LB','LC','LD','LE','LF','LG','LH','LI','LJ','LK','LL','LM','LN','LO','LP','LQ','LR','LS','LT','LU','LV','LW','LX','LY','LZ','L1','L2','L3','L4','L5','L6','L7','L8','L9','L0' then return 'China';
when 'MA','MB','MC','MD','ME' then return 'India';
when 'MF','MG','MH','MI','MJ','MK' then return 'Indonesia';
when 'ML','MM','MN','MO','MP','MQ','MR' then return 'Thailand';
when 'MS','MT','MU','MV','MW','MX','MY','MZ','M1','M2','M3','M4','M5','M6','M7','M8','M9','M0' then return 'not assigned';
when 'NF','NG','NH','NI','NJ','NK' then return 'Pakistan';
when 'NL','NM','NN','NO','NP','NQ','NR' then return 'Turkey';
when 'NS','NT','NU','NV','NW','NX','NY','NZ','N1','N2','N3','N4','N5','N6','N7','N8','N9','N0' then return 'not assigned';
when 'PA','PB','PC','PD','PE' then return 'Philippines';
when 'PF','PG','PH','PI','PJ','PK' then return 'Singapore';
when 'PL','PM','PN','PO','PP','PQ','PR' then return 'Malaysia';
when 'PS','PT','PU','PV','PW','PX','PY','PZ','P1','P2','P3','P4','P5','P6','P7','P8','P9','P0' then return 'not assigned';
when 'RA','RB','RC','RD','RE' then return 'United Arab Emirates';
when 'RF','RG','RH','RI','RJ','RK' then return 'Taiwan';
when 'RL','RM','RN','RO','RP','RQ','RR' then return 'Vietnam';
when 'RS','RT','RU','RV','RW','RX','RY','RZ','R1','R2','R3','R4','R5','R6','R7','R8','R9','R0' then return 'not assigned';
when 'SA','SB','SC','SD','SE','SF','SG','SH','SI','SJ','SK','SL','SM' then return 'United Kingdom';
when 'SN','SO','SP','SQ','SR','SS','ST' then return 'Germany';
when 'SU','SV','SW','SX','SY','SZ' then return 'Poland';
when 'S1','S2','S3','S4' then return 'Latvia';
when 'TA','TB','TC','TD','TE','TF','TG','TH' then return 'Switzerland';
when 'TJ','TK','TL','TM','TN','TO','TP' then return 'Czech Republic';
when 'TR','TS','TT','TU','TV' then return 'Hungary';
when 'TW','TX','TY','TZ','T1' then return 'Portugal';
when 'T2','T3','T4','T5','T6','T7','T8','T9','T0' then return 'not assigned';
REztor вне форума Ответить с цитированием
Старый 28.10.2011, 18:22   #8
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию

Код:
when 'UA','UB','UC','UD','UE','UF','UG' then return 'not assigned';
when 'UH','UI','UJ','UK','UL','UM' then return 'Denmark';
when 'UN','UO','UP','UQ','UR','US','UT' then return 'Ireland';
when 'UU','UV','UW','UX','UY','UZ' then return 'Romania';
when 'U1','U2','U3','U4' then return 'not assigned';
when 'U5','U6','U7' then return 'Slovakia';
when 'U8','U9','U0' then return 'not assigned';
when 'VA','VB','VC','VD','VE' then return 'Austria';
when 'VF','VG','VH','VI','VJ','VK','VL','VM','VN','VO','VP','VQ','VR' then return 'France';
when 'VS','VT','VU','TV','VW' then return 'Spain';
when 'VX','VY','VZ','V1','V2' then return 'Serbia';
when 'V3','V4','V5' then return 'Croatia';
when 'V6','V7','V8','V9','V0' then return 'Estonia';
when 'WA','WB','WC','WD','WE','WF','WG','WH','WI','WJ','WK','WL','WM','WN','WO','WP','WQ','WR','WS','WT','WU','WV','WW','WX','WY','WZ','W1','W2','W3','W4','W5','W6','W7','W8','W9','W0' then return 'Germany';
when 'XA','XB','XC','XD','XE' then return 'Bulgaria';
when 'XF','XG','XH','XI','XJ','XK' then return 'Greece';
when 'XL','XM','XN','XO','XP','XQ','XR'then return 'Netherlands';
when 'XS','XT','XU','XV','XW' then return 'USSR';
when 'XX','XY','XZ','X1','X2' then return 'Luxembourg';
when 'X3','X4','X5','X6','X7','X8','X9','X0'then return 'Russia';
when 'YA','YB','YC','YD','YE' then return 'Belgium';
when 'YF','YG','YH','YI','YJ','YK' then return 'Finland';
when 'YL','YM','YN','YO','YP','YQ','YR'then return 'Malta';
when 'YS','YT','YU','YV','YW' then return 'Sweden';
when 'YX','YY','YZ','Y1','Y2' then return 'Norway';
when 'Y3','Y4','Y5' then return 'Belarus';
when 'Y6','Y7','Y8','Y9','Y0' then return 'Ukraine';
when 'ZA','ZB','ZC','ZD','ZE','ZF','ZG','ZH','ZI','ZJ','ZK','ZL','ZM','ZN','ZO','ZP','ZQ','ZR'then return 'Italy';
when 'ZS','ZT','ZU','ZV','ZW' then return 'not assigned';
when 'ZX','ZY','ZZ','Z1','Z2'then return 'Slovenia';
when 'Z3','Z4','Z5' then return 'Lithuania';
when 'Z6','Z7','Z8','Z9','Z0'then return 'not assigned';
when '1A','1B','1C','1D','1E','1F','1G','1H','1I','1J','1K','1L','1M','1N','1O','1P','1Q','1R','1S','1T','1U','1V','1W','1X','1Y','1Z','11','12','13','14','15','16','17','18','19','10' then return 'United States';
when '2A','2B','2C','2D','2E','2F','2G','2H','2I','2J','2K','2L','2M','2N','2O','2P','2Q','2R','2S','2T','2U','2V','2W','2X','2Y','2Z','21','22','23','24','25','26','27','28','29','20' then return 'Canada';
when '3A','3B','3C','3D','3E','3F','3G','3H','3I','3J','3K','3L','3M','3N','3O','3P','3Q','3R','3S','3T','3U','3V','3W' then return 'Mexico';
when '3X','3Y','3Z','31','32','33','34','35','36','37' then return 'Costa Rica';
when '38','39','30' then return 'Cayman Islands';
when '4A','4B','4C','4D','4E','4F','4G','4H','4I','4J','4K','4L','4M','4N','4O','4P','4Q','4R','4S','4T','4U','4V','4W','4X','4Y','4Z','41','42','43','44','45','46','47','48','49','40' then return 'United States';
when '5A','5B','5C','5D','5E','5F','5G','5H','5I','5J','5K','5L','5M','5N','5O','5P','5Q','5R','5S','5T','5U','5V','5W','5X','5Y','5Z','51','52','53','54','55','56','57','58','59','50' then return 'United States';
when '6A','6B','6C','6D','6E','6F','6G','6H','6I','6J','6K','6L','6M','6N','6O','6P','6Q','6R','6S','6T','6U','6V','6W' then return 'Australia';
when '6X','6Y','6Z','61','62','63','64','65','66','67','68','69','60' then return 'not assigned';
when '7A','7B','7C','7D','7E'then return 'New Zealand';
when '7F','7G','7H','7I','7J','7K','7L','7M','7N','7O','7P','7Q','7R','7S','7T','7U','7V','7W','7X','7Y','7Z','71','72','73','74','75','76','77','78','79','70' then return 'not assigned';
when '8A','8B','8C','8D','8E'then return 'Argentina';
when '8F','8G','8H','8I','8J','8K' then return 'Chile';
when '8L','8M','8N','8O','8P','8Q','8R' then return 'Ecuador';
when '8S','8T','8U','8V','8W' then return 'Peru';
when '8X','8Y','8Z','81','82' then return 'Venezuela';
when '83','84','85','86','87','88','89','80' then return 'not assigned';
when '9A','9B','9C','9D','9E'then return 'Brazil';
when '9F','9G','9H','9I','9J','9K' then return 'Colombia';
when '9L','9M','9N','9O','9P','9Q','9R' then return 'Paraguay';
when '9S','9T','9U','9V','9W' then return 'Uruguay';
when '9X','9Y','9Z','91','92'then return 'Trinidad & Tobago';
when '93','94','95','96','97','98','99' then return 'Brazil';
when '90' then return 'not assigned';
else return 'not assigned';
end case;
REztor вне форума Ответить с цитированием
Старый 28.10.2011, 19:34   #9
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

С ума сойти .. извините не сдержался )) ... я думаю, что если у вас функция пишется в SQL, то все эти данные должны храниться в таблице, а процедура просто сделает select ....
Cronos20 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как написать такую программу? Fenrir Yensen Помощь студентам 3 05.12.2010 12:20
Как реализовать такую функцию ? kakawkin Общие вопросы Delphi 1 02.06.2010 02:20
Как написать функцию женя2012 Общие вопросы C/C++ 0 11.05.2010 17:57
Как написать такую функцию? 2face2 Помощь студентам 6 02.02.2010 20:26
Как на Delphi написать такую лёгкую прогу?(Помогите нубу)) FreXx^24 Общие вопросы Delphi 7 22.03.2007 14:03