2017-05-26 16 views
2

0から5000までのパラメータから挿入された数字を単語で表示するPL/SQL関数をコーディングしていますが、表示される結果は英語で表示されます(スクリーンショットをチェックインできるようになりました)。しかし、スペイン語で、TO_CHAR関数で提供されている "NLSPARAM"について読んでいますが、どのようにコード化できますか?あなたは何か考えていますか?ありがとう。Oracle - NLSParamsを使用してTO_CHAR関数を使用して強制的に言語を変更するにはどうすればよいですか?

CREATE OR REPLACE FUNCTION letras_a_numeros(p_numero NUMBER) 
RETURN VARCHAR2 
IS 
    v_enteros NUMBER(8); 
    v_decimales NUMBER(8, 2); 
    v_final_decimales NUMBER(8, 2); 
    v_salida VARCHAR2(1000); 
    e_invalido EXCEPTION; 
BEGIN 
    IF 
     p_numero NOT BETWEEN 0 AND 5000 THEN 
      RAISE e_invalido; 
    END IF; 

    v_enteros := TRUNC(p_numero); 

    v_decimales := TRUNC(p_numero); 
    v_final_decimales := SUBSTR(p_numero - v_decimales, 2); 

    IF 
     v_enteros = 0 THEN 
      v_salida := 'Cero'; 
    ELSE 
     SELECT TO_CHAR(DATE '-4712-01-01' + (v_enteros - 1), 'JSP') 
     INTO v_salida 
     FROM dual; 
    END IF; 

    IF 
     v_final_decimales > 0 THEN 
      RETURN v_salida || ' con ' || v_final_decimales || '/100'; 
    ELSE 
      RETURN v_salida; 
    END IF; 
EXCEPTION 
    WHEN e_invalido THEN 
     RETURN 'Número inválido, ingrese valor entre 0 y 5000'; 
END letras_a_numeros; 

enter image description here

答えて

3

次のような、日付の言語を指定するに言及されています

SELECT TO_CHAR(some_date, 'DD Mon YYYY', 'NLS_DATE_LANGUAGE=''SPANISH''') FROM ... 

しかし、それは日と月の名前のようなものに適用され、あなたがやりたいことはありませんここに。 From the documentation:日付書式要素の接尾辞で

注:

  • あなたは日時書式要素にこれらの接尾辞の1を追加すると、戻り値は常に英語です。
    ...

ので、あなたは、残念ながら、英語以外の言語の単語に値を綴るためにこのメカニズムを使用することはできません。

あなたは言語パラメータは、クエリのバージョンでSPに違いはありませんことを確認することができます

SELECT TO_CHAR(DATE '-4712-01-01' + (124 - 1), 'JSP', 'NLS_DATE_LANGUAGE=''SPANISH''') OUTPUT 
FROM DUAL 

OUTPUT 
------------------------------------------------------ 
ONE HUNDRED TWENTY-FOUR 

あなたは手動であなたの番号を変換する必要があります。 something like thisにスペイン語を使用するように調整できます。

+0

ありがとうございました。あなたの答えは正しい。 –