![](/img/trans.png)
[英]How would I create a table in Oracle 11g R2 from a SELECT AS and partition the table by range-list?
[英]How to create a table in Oracle 11g with the list of language codes based on util_i18n?
前幾天,我問如何在可能的情況下基於內置的oracle表生成貨幣列表: oracle是否提供內置的貨幣表供我用作約束? 。
現在,我需要一個語言代碼列表,因此我閱讀了util_i18n的文檔,並找到了一個名為GET_LOCAL_LANGUAGES
的函數。 我嘗試將先前答案中的腳本改編為這個新問題,但失敗了。 這主要是因為我的oracle / sql Knowlegde很糟糕:
我嘗試改編的原件:
select utl_i18n.GET_DEFAULT_ISO_CURRENCY(value) iso_cur
from v$nls_valid_values
where parameter = 'TERRITORY'
我嘗試將其用於語言:
select utl_i18n.GET_LOCAL_LANGUAGES(value) lang_cur
from v$nls_valid_values
where parameter = 'TERRITORY'
我檢查了文檔,並且TERRITORY
也是參數名稱,該部分不是猜測。 通過此查詢,我得到錯誤: invalid data type
我敢打賭這是一個菜鳥問題,但到目前為止我的所有嘗試都失敗了。
例如,您可以使用管道包裝器(原始函數返回程序包定義的集合類型):
SQL> create type t_lang_tab is table of varchar2(4000)
2 /
SQL> create or replace function get_language(
2 p_value in varchar2
3 ) return t_lang_tab
4 pipelined
5 is
6 res utl_i18n.string_array;
7 begin
8 res := utl_i18n.GET_LOCAL_LANGUAGES(p_value);
9 if res is not null then
10 for i in 1..res.count loop
11 pipe row (substr(res(i),1,4000));
12 end loop;
13 end if;
14 return;
15 end;
16 /
SQL> col column_value format a25
SQL> col value format a25
SQL> select t.column_value, p.value
2 from v$nls_valid_values p,
3 table(get_language(p.value)) t
4 where parameter = 'TERRITORY'
5 /
COLUMN_VALUE VALUE
------------------------- -------------------------
ENGLISH AMERICA
GERMAN DIN GERMANY
CANADIAN FRENCH CANADA
FRENCH CANADA
CATALAN SPAIN
SWEDISH FINLAND
PORTUGUESE BRAZIL
LATIN AMERICAN SPANISH MEXICO
SPANISH MEXICO
SPANISH CATALONIA
ARABIC EGYPT
....
如果要創建語言表,可以執行以下操作:
SQL> CREATE TABLE languages (
2 country VARCHAR2(30) NOT NULL,
3 language VARCHAR2(30) NOT NULL,
4 CONSTRAINT languages_pk PRIMARY KEY (country, language)
5 )
6 /
主鍵應為復合鍵,因為加拿大等多國語言國家。 現在您可以使用上面的函數來填充表格:
SQL> INSERT INTO languages
2 select p.value, t.column_value
3 from v$nls_valid_values p,
4 table(get_language(p.value)) t
5 where parameter = 'TERRITORY'
6 order by 1
7 /
SQL> commit;
SQL> select * from languages;
COUNTRY LANGUAGE
------------------------------ ------------------------------
AMERICA ENGLISH
ARGENTINA SPANISH
BELARUS RUSSIAN
BELGIUM FRENCH
BRAZIL PORTUGUESE
CANADA FRENCH
CANADA CANADIAN FRENCH
CATALONIA SPANISH
CHILE SPANISH
COLOMBIA SPANISH
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.