home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Internet Business Development Kit / PRODUCT_CD.iso / sqlsvr / i386 / instlang.sql < prev    next >
Encoding:
Text File  |  1995-07-12  |  13.2 KB  |  387 lines

  1. if exists (select * from sysobjects
  2.         where sysstat & 0xf = 4
  3.             and name = 'sp_chklangparam')
  4.     drop procedure sp_chklangparam
  5. go
  6.  
  7. print ''
  8. print 'Creating procedure sp_chklangparam.'
  9. go
  10. create procedure sp_chklangparam
  11. @namelist varchar(251),        /* month or day name list */
  12. @msgparam varchar(30),        /* name of list, for error messages */
  13. @numnames int,            /* correct number of names in the list */
  14. @maxnamelen int            /* maximum length of any name in list */
  15. as
  16.  
  17.     /*
  18.     ** sp_chklangparam is called by sp_addlanguage to check the lists of
  19.     ** full month names, short month names, and day names.  It returns a status
  20.     ** indicating whether any errors were found:
  21.     **    0 - name list is valid
  22.     **    1 - spaces were found, which are not allowed
  23.     **    2 - not enough names in the list (must be exactly @numnames of them)
  24.     **    3 - too many names in the list (must be exactly @numnames of them)
  25.     **    4 - some name(s) are too long
  26.     **    5 - some name(s) have non-aphabetic characters
  27.     */
  28.  
  29.     declare @totallen        int
  30.     declare @mthlen            int
  31.     declare @mthname        varchar(251)
  32.     declare @msg            varchar(255)
  33.     declare @csid            tinyint
  34.     declare @csname            varchar(30)
  35.     declare @alpha_0_start        tinyint
  36.     declare @alpha_0_end        tinyint
  37.     declare @alpha_1_start        tinyint
  38.     declare @alpha_1_end        tinyint
  39.     declare @alpha_2_start        tinyint
  40.     declare @alpha_2_end        tinyint
  41.     declare @alpha_3_start        tinyint
  42.     declare @alpha_3_end        tinyint
  43.     declare @alpha_4_start        tinyint
  44.     declare @alpha_4_end        tinyint
  45.     declare @alpha_5_start        tinyint
  46.     declare @alpha_5_end        tinyint
  47.     declare @alpha_6_start        tinyint
  48.     declare @alpha_6_end        tinyint
  49.     declare @alpha_7_start        tinyint
  50.     declare @alpha_7_end        tinyint
  51.     declare @alpha_s_1        tinyint
  52.     declare @alpha_s_2        tinyint
  53.     declare @alpha_s_3        tinyint
  54.     declare @alpha_s_4        tinyint
  55.     declare @curchar        tinyint
  56.     declare @next            int
  57.  
  58.     /* Get the Character Set id (csid) */
  59.     select @csid = csid from master..syscharsets
  60.         where id = (select value from master..sysconfigures
  61.             where config = 1123)
  62.  
  63.     /* Get the Character Set Name (csname) */
  64.     select @csname = name from master..syscharsets
  65.         where id = @csid and type < 2000
  66.  
  67.     /* Make sure the list has no blanks. */
  68.     if ( charindex( ' ', @namelist ) <> 0 )
  69.     begin
  70.         raiserror(15057,-1,-1,@msgparam)
  71.         return (1)
  72.     end
  73.  
  74.     if @csid = 1
  75.         /* Set up the alphabetic codepoint ranges for iso_1. */
  76.         select @alpha_0_start = 0x41, @alpha_0_end = 0x5A,
  77.            @alpha_1_start = 0x61, @alpha_1_end = 0x7A,
  78.            @alpha_2_start = 0xC0, @alpha_2_end = 0xD6,
  79.            @alpha_3_start = 0xD8, @alpha_3_end = 0xF6,
  80.                @alpha_4_start = 0xF8, @alpha_4_end = 0xFF,
  81.                @alpha_5_start = 0x41, @alpha_5_end = 0x5A,
  82.                @alpha_6_start = 0x61, @alpha_6_end = 0x7A,
  83.                @alpha_7_start = 0x61, @alpha_7_end = 0x7A,
  84.            @alpha_s_1 = 0x41, @alpha_s_2 = 0x41, @alpha_s_3 = 0x41,
  85.            @alpha_s_4 = 0x2D
  86.  
  87.     if @csid = 2
  88.         /* Set up the alphabetic codepoint ranges for cp850. */
  89.         select @alpha_0_start = 0x41, @alpha_0_end = 0x5A,
  90.            @alpha_1_start = 0x61, @alpha_1_end = 0x7A,
  91.            @alpha_2_start = 0x80, @alpha_2_end = 0x9D,
  92.            @alpha_3_start = 0xA0, @alpha_3_end = 0xA5,
  93.                @alpha_4_start = 0xB5, @alpha_4_end = 0xB7,
  94.                @alpha_5_start = 0xC6, @alpha_5_end = 0xC7,
  95.                @alpha_6_start = 0xD0, @alpha_6_end = 0xD8,
  96.                @alpha_7_start = 0xE0, @alpha_7_end = 0xED,
  97.            @alpha_s_1 = 0xDE, @alpha_s_2 = 0xF4, @alpha_s_3 = 0xF5,
  98.            @alpha_s_4 = 0x2D
  99.  
  100.     if @csid = 3
  101.         /* Set up the alphabetic codepoint ranges for cp437. */
  102.         select @alpha_0_start = 0x41, @alpha_0_end = 0x5A,
  103.            @alpha_1_start = 0x61, @alpha_1_end = 0x7A,
  104.            @alpha_2_start = 0x80, @alpha_2_end = 0x9A,
  105.            @alpha_3_start = 0xA0, @alpha_3_end = 0xA5,
  106.                @alpha_4_start = 0xE0, @alpha_4_end = 0xEE,
  107.                @alpha_5_start = 0x41, @alpha_5_end = 0x5A,
  108.                @alpha_6_start = 0x61, @alpha_6_end = 0x7A,
  109.                @alpha_7_start = 0x61, @alpha_7_end = 0x7A,
  110.            @alpha_s_1 = 0x9E, @alpha_s_2 = 0x41, @alpha_s_3 = 0x41,
  111.            @alpha_s_4 = 0x2D
  112.  
  113.     if (@csid >= 4)
  114.         /* Set up the alphabetic codepoint ranges for other code pages. */
  115.         select @alpha_0_start = 0x41, @alpha_0_end = 0x5A,
  116.            @alpha_1_start = 0x61, @alpha_1_end = 0x7A,
  117.                @alpha_2_start = 0x32, @alpha_2_end = 0xFF,
  118.            @alpha_3_start = 0x80, @alpha_3_end = 0xFF,
  119.                @alpha_4_start = 0x41, @alpha_4_end = 0x5A,
  120.                @alpha_5_start = 0x41, @alpha_5_end = 0x5A,
  121.                @alpha_6_start = 0x61, @alpha_6_end = 0x7A,
  122.                @alpha_7_start = 0x80, @alpha_7_end = 0xFF,
  123.            @alpha_s_1 = 0x41, @alpha_s_2 = 0x41, @alpha_s_3 = 0x41,
  124.            @alpha_s_4 = 0x41
  125.  
  126.         select @totallen = datalength( @namelist )
  127.     while ( @totallen > 0 )
  128.     begin
  129.         /* Move to the next name in the list. */
  130.         select @namelist = right( @namelist, @totallen )
  131.  
  132.         /* If this is not the last name in the list then there must
  133.         ** be another comma.
  134.         */
  135.         if ( @numnames > 1 )
  136.         begin
  137.             select @mthlen = charindex( ',', @namelist ) - 1
  138.             if ( @mthlen < 0 )
  139.             begin
  140.                 raiserror(15058,-1,-1,@msgparam)
  141.                 return(2)
  142.             end
  143.         end
  144.  
  145.         /* This is the last name in the list, so there cannot be
  146.         ** another comma.  This name is all remaining characters
  147.         ** in the list.
  148.         */
  149.         else
  150.         begin
  151.             if ( charindex( ',', @namelist ) <> 0 )
  152.             begin
  153.                 raiserror(15059,-1,-1,@msgparam)
  154.                 return(3)
  155.             end
  156.             select @mthlen = @totallen
  157.         end
  158.  
  159.         /* Check the name length. */
  160.         if ( @mthlen > @maxnamelen )
  161.         begin
  162.             raiserror(15283,-1,-1,@msgparam)
  163.             return(4)
  164.         end
  165.  
  166.         /*
  167.         ** Check to see that the names contain only true
  168.         ** ALPHA-betic characters; not even DIGITs are allowed.
  169.         */
  170.         select @next = 1
  171.         while ( @next <= @mthlen )
  172.         begin
  173.             select @curchar = convert(binary(1),
  174.             substring(@namelist, @next, 1))
  175.             if (not
  176.             (
  177.                (@curchar between @alpha_0_start and @alpha_0_end)
  178.             or (@curchar between @alpha_1_start and @alpha_1_end)
  179.             or (@curchar between @alpha_2_start and @alpha_2_end)
  180.             or (@curchar between @alpha_3_start and @alpha_3_end)
  181.             or (@curchar between @alpha_4_start and @alpha_4_end)
  182.             or (@curchar between @alpha_5_start and @alpha_5_end)
  183.             or (@curchar between @alpha_6_start and @alpha_6_end)
  184.             or (@curchar between @alpha_7_start and @alpha_7_end)
  185.             or @curchar = @alpha_s_1
  186.             or @curchar = @alpha_s_2
  187.             or @curchar = @alpha_s_3
  188.             or @curchar = @alpha_s_4
  189.             )
  190.             )
  191.             begin
  192.                 raiserror(15060,-1,-1,@msgparam,@csname)
  193.             return(5)
  194.             end
  195.  
  196.             select @next = @next + 1
  197.         end
  198.  
  199.         /* Move to the next name in the list. */
  200.         select @numnames = @numnames - 1
  201.         select @totallen = @totallen - @mthlen - 1
  202.     end
  203.  
  204.     /* No problems were found with the name list. */
  205.     return (0)
  206. go
  207.  
  208.  
  209. declare @csid tinyint
  210.  
  211. select @csid = (select csid from master.dbo.syscharsets where id = (select value from master.dbo.sysconfigures where config = 1123))
  212.  
  213. if (@csid < 4)
  214. begin
  215.  
  216.     exec sp_addlanguage 'Dansk', 'Danish',
  217.     'januar,februar,marts,april,maj,juni,juli,august,september,oktober,november,december',
  218.     'jan,feb,mar,apr,maj,jun,jul,aug,sep,okt,nov,dec',
  219.     'mandag,tirsdag,onsdag,torsdag,fredag,lordag,sondag',
  220.     dmy,1
  221.  
  222.     exec sp_addlanguage 'Deutsch','German',
  223.     'Januar,Februar,März,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember',
  224.     'Jan,Feb,Mär,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez',
  225.     'Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Sonntag',
  226.     dmy,1
  227.  
  228.     exec sp_addlanguage 'Español','Spanish',
  229.     'Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octubre,Noviembre,Diciembre',
  230.     'Ene,Feb,Mar,Abr,May,Jun,Jul,Ago,Sep,Oct,Nov,Dic',
  231.     'Lunes,Martes,Miércoles,Jueves,Viernes,Sábado,Domingo',
  232.     dmy,1
  233.  
  234.     exec sp_addlanguage 'Français','French',
  235.     'janvier,février,mars,avril,mai,juin,juillet,août,septembre,octobre,novembre,décembre',
  236.     'jan,fév,mar,avr,mai,jun,jul,aoû,sep,oct,nov,dec',
  237.     'lundi,mardi,mercredi,jeudi,vendredi,samedi,dimanche',
  238.     dmy,1
  239.  
  240.     exec sp_addlanguage 'Italiano','Italian',
  241.     'gennaio,febbraio,marzo,aprile,maggio,giugno,luglio,agosto,settembre,ottobre,novembre,dicembre',
  242.     'gen,feb,mar,apr,mag,giu,lug,ago,set,ott,nov,dic',
  243.     'lunedì,martedì,mercoledì,giovedì,venerdì,sabato,domenica',
  244.     dmy,1
  245.  
  246.     exec sp_addlanguage 'Nederlands','Dutch',
  247.     'januari,februari,maart,april,mei,juni,juli,augustus,september,oktober,november,december',
  248.     'jan,feb,mrt,apr,mei,jun,jul,aug,sep,okt,nov,dec',
  249.     'maandag,dinsdag,woensdag,donderdag,vrijdag,zaterdag,zondag',
  250.     dmy,1
  251.  
  252.     exec sp_addlanguage 'Norsk','Norwegian',
  253.     'januar,februar,mars,april,mai,juni,juli,august,september,oktober,november,desember',
  254.     'jan,feb,mar,apr,mai,jun,jul,aug,sep,okt,nov,des',
  255.     'mandag,tirsdag,onsdag,torsdag,fredag,laurdag,sundag',
  256.     dmy,1
  257.  
  258.     exec sp_addlanguage 'Português','Portugese',
  259.     'janeiro,fevereiro,março,abril,maio,junho,julho,agôsto,setembro,outubro,novembro,dezembro',
  260.     'jan,fev,mar,abr,mai,jun,jul,ago,set,out,nov,dez',
  261.     'segunda-feira,terça-feira,quarta-feira,quinta-feira,sexta-feira,sábado,domingo',
  262.     dmy,7
  263.  
  264.     exec sp_addlanguage 'Suomi','Finnish',
  265.     'tammikuuta,helmikuuta,maaliskuuta,huhtikuuta,toukokuuta,kesäkuuta,heinäkuuta,elokuuta,syyskuuta,lokakuuta,marraskuuta,joulukuuta',
  266.     'tammi,helmi,maalis,huhti,touko,kesä,heinä,elo,syys,loka,marras,joulu',
  267.     'maanantai,tiistai,keskiviikko,torstai,perjantai,lauantai,sunnuntai',
  268.     dmy,1
  269.  
  270.     exec sp_addlanguage 'Svenska','Swedish',
  271.     'januari,februari,mars,april,maj,juni,juli,augusti,september,oktober,november,december',
  272.     'jan,feb,mar,apr,maj,jun,jul,aug,sep,okt,nov,dec',
  273.     'måndag,tisdag,onsdag,torsdag,fredag,lördag,söndag',
  274.     ymd,1
  275.  
  276.  
  277.         exec sp_addlanguage 'British', 'English',
  278.         'January,February,March,April,May,June,July,August,September,October,November,December',
  279.         'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec',
  280.         'Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday',
  281.         dmy,1
  282.  
  283. end
  284.  
  285. if (@csid = 4)
  286. begin
  287.  
  288. exec sp_addlanguage 'Czech', 'ƒeτtina',
  289. 'leden,únor,b²ezen,duben,kv╪ten,ƒerven,ƒervenec,srpen,zá²í,²íjen,listopad,prosinec',
  290. 'I,II,III,IV,V,VI,VII,VIII,IX,X,XI,XII',
  291. 'pond╪lí,úter∞,st²eda,ƒtvrtek,pátek,sobota,ned╪le',
  292. dmy,1
  293.  
  294. exec sp_addlanguage 'Hungarian', 'magyar',
  295. 'január,február,március,április,május,június,július,augusztus,szeptember,október,november,december',
  296. 'jan,febr,márc,ápr,máj,jún,júl,aug,szept,okt,nov,dec',
  297. 'hétfï,kedd,szerda,csütörtök,péntek,szombat,vasárnap',
  298. ymd,1
  299.  
  300. exec sp_addlanguage 'Polish', 'polski',
  301. 'styczeΣ,luty,marzec,kwiecieΣ,maj,czerwiec,lipiec,sierpieΣ,wrzesieΣ,pa½dziernik,listopad,grudzieΣ',
  302. 'I,II,III,IV,V,VI,VII,VIII,IX,X,XI,XII',
  303. 'poniedziaêek,wtorek,ÿroda,czwartek,piÑtek,sobota,niedziela',
  304. dmy,1
  305.  
  306. exec sp_addlanguage 'Romanian', 'român╟',
  307. 'ianuarie,februarie,martie,aprilie,mai,iunie,iulie,august,septembrie,octombrie,noiembrie,decembrie',
  308. 'Ian,Feb,Mar,Apr,Mai,Iun,Iul,Aug,Sep,Oct,Nov,Dec',
  309. 'luni,marεi,miercuri,joi,vineri,sîmb╟t╟,duminic╟',
  310. dmy,1
  311.  
  312. exec sp_addlanguage 'Croatian', 'hrvatski',
  313. 'sijeƒanj,veljaƒa,oºujak,travanj,svibanj,lipanj,srpanj,kolovoz,rujan,listopad,studeni,prosinac',
  314. 'sij,vel,oºu,tra,svi,lip,srp,kol,ruj,lis,stu,pro',
  315. 'ponedjeljak,utorak,srijeda,ƒetvrtak,petak,subota,nedjelja',
  316. ymd,1
  317.  
  318. exec sp_addlanguage 'Slovak', 'slovenƒina',
  319. 'január,február,marec,apríl,máj,jún,júl,august,september,október,november,december',
  320. 'I,II,III,IV,V,VI,VII,VIII,IX,X,XI,XII',
  321. 'pondelok,utorok,streda,τtvrtok,piatok,sobota,nedeûa',
  322. dmy,1
  323.  
  324. exec sp_addlanguage 'Slovene', 'slovenski',
  325. 'januar,februar,marec,april,maj,junij,julij,avgust,september,oktober,november,december',
  326. 'jan,feb,mar,apr,maj,jun,jul,avg,sept,okt,nov,dec',
  327. 'ponedeljek,torek,sreda,ƒetrtek,petek,sobota,nedelja',
  328. dmy,1
  329.  
  330. end
  331.  
  332. if (@csid = 5)
  333. begin
  334.  
  335. exec sp_addlanguage 'Bulgarian', 'íΩ½úáα߬¿',
  336. '∩¡πáα¿,ΣÑóαπáα¿,¼áαΓ,á»ó¿½,¼á⌐,ε¡¿,,áóúπßΓ,ßÑ»ΓѼóα¿,«¬Γ«¼óα¿,¡«Ñ¼óα¿,ñѬѼóα¿',
  337. '∩¡πáα¿,ΣÑóαπáα¿,¼áαΓ,á»α¿½,¼á⌐,ε¡¿,,áóúπßΓ,ßÑ»ΓѼóα¿,«¬Γ«¼óα¿,¡«Ñ¼óα¿,ñѬѼóα¿',
  338. '»«¡Ññѽ¡¿¬,óΓ«α¡¿¬,ßα∩ñá,τÑΓóΩóΓΩ¬,»ÑΓΩ¬,ßΩí«Γá,¡Ññѽ∩',
  339. dmy,1
  340.  
  341. exec sp_addlanguage 'Russian', 'απß߬¿⌐',
  342. 'ƒ¡óáα∞,öÑóαá½∞,îáαΓ,Ç»αѽ∞,îá⌐,êε¡∞,êε½∞,ÇóúπßΓ,æÑ¡Γ∩íα∞,ĬΓ∩íα∞,ì«∩íα∞,äѬáíα∞',
  343. '∩¡ó,ΣÑó,¼áα,á»α,¼á⌐,¿ε¡,¿ε½,áóú,ßÑ¡,«¬Γ,¡«∩,ñѬ',
  344. '»«¡Ññѽ∞¡¿¬,óΓ«α¡¿¬,ßαÑñá,τÑΓóÑαú,»∩Γ¡¿µá,ßπíí«Γá,ó«ß¬αÑßÑ¡∞Ñ',
  345. dmy,1
  346.  
  347. /*
  348. exec sp_addlanguage 'Russian', 'áúíí≥≡c',
  349. '_-≈ á¼,"_≈á <¼,_ áó,_⌠á_<¼,_ c,_«-¼,_«<¼,_≈_úíó,'_-ó»÷á¼,_≥ó»÷á¼,_R»÷á¼,"_≥ ÷á¼',
  350. '»-≈,ñ_≈,┐ á, ⌠á,┐ c,≡«-,≡«<, ≈_,í_-,R≥ó,-R»,²_≥',
  351. '⌠R-_²_<¼-≡≥,≈óRá-≡≥,íá_² ,º_ó≈_á_,⌠»ó-≡ª ,íú÷÷Ró ,≈Rí≥á_í_-¼_',
  352. dmy,1
  353.  
  354.  
  355. exec sp_addlanguage 'Russian', ' _÷÷Γαc',
  356. '_-τ∩ ┐,"_τ ∩<┐,_∩ ≈,_Σ _<┐,_∩c,_R-┐,_R<┐,_τ__÷≈,'_-≈⌠µ ┐,_Γ≈⌠µ ┐,_R⌠µ ┐,"_Γ∩µ ┐',
  357. '⌠-τ,²_τ,⌡∩ ,∩Σ ,⌡∩c,αR-,αR<,∩τ_,÷_-,RΓ≈,-R⌠,φ_Γ',
  358. 'ΣR-_φ_<┐-αΓ,τ≈R -αΓ,÷ _φ∩,_≈τ_ _,Σ⌠≈-α│∩,÷_µµR≈∩,τR÷Γ _÷_-┐_',
  359. dmy,1
  360. */
  361.  
  362. end
  363.  
  364. if (@csid = 6)
  365. begin
  366.  
  367. exec sp_addlanguage 'Greek', '£óó₧ñáíß',
  368. 'êÿñª¼ÿ¿σª¼,ö£Ö¿ª¼ÿ¿σª¼,ïÿ¿½σª¼,Ǻ¿áóσª¼,ïÿ_ª¼,ꪼñσª¼,ꪼóσª¼,Ǽܪτ⌐½ª¼,棺½£úÖ¿σª¼,Äí½αÖ¿σª¼,úÖ¿σª¼,â£í£úÖ¿σª¼',
  369. 'êÿñ,ö£Ö,ïÿ¿,Ǻ¿,ïÿΣ,ꪼñ,ꪼó,ǼÜ,棺,Äí½,,â£í',
  370. '⣼½Γ¿ÿ,Æ¿σ½₧,Æ£½ß¿½₧,ÅΓúº½₧,Åÿ¿ÿ⌐í£¼π,æßÖÖÿ½ª,뼿áÿíπ',
  371. dmy,1
  372.  
  373. end
  374.  
  375. if (@csid = 7)
  376. begin
  377.  
  378. exec sp_addlanguage 'Turkish', 'Türkçe',
  379. 'Ocak,₧ubat,Mart,Nisan,Mayìs,Haziran,Temmuz,Aºustos,Eylül,Ekim,Kasìm,Aralìk',
  380. 'Oca,₧ub,Mar,Nis,May,Haz,Tem,Aºu,Eyl,Eki,Kas,Ara',
  381. 'Pazartesi,Salì,Çarƒamba,Perƒembe,Cuma,Cumartesi,Pazar',
  382. dmy,1
  383.  
  384. end
  385.  
  386. go
  387.