в db2 почему 'CONTAINS SQL' играет определенную роль c при преобразовании символов половинной ширины в символы полной ширины - PullRequest
0 голосов
/ 20 марта 2020

мы использовали REPLACE () для преобразования строки символов, переданной в качестве аргумента, из символов полуширины в символы полной ширины (замените все символы полуширины на REPLACE ()).

я). Объявляя 'CONTAINS SQL' и создавая FUNCTION, мы смогли вызвать FUNCTION из хранимой процедуры с помощью SQL, такой как обновление таблицы

create or replace procedure zz_kit2(
out O_VALUE1 VARCHAR(20000), OUT O_VALUE2 VARCHAR(20000)    
)
SPECIFIC zz_kit2

P1:BEGIN
--123456ABCDEF   ->123456ABCABC
update TBL_MEM_ACC SET FILLER1 = FNC_NAME2('A');
set O_VALUE1=FNC_NAME('A');
set O_VALUE2=FNC_NAME2('A');
END P1

ii). Не объявляя 'CONTAINS SQL', обновление таблицы не работает

Оператор не был обработан, поскольку функция "FNC_NAME2" разрешена для указания c функции "FNC_NAME2", которая недопустима

в контексте, где он используется ... SQLCODE = -390, SQLSTATE = 42887, DRIVER = 4.24.92

create or replace procedure zz_kit2(
out O_VALUE1 VARCHAR(20000), OUT O_VALUE2 VARCHAR(20000)    
)
SPECIFIC zz_kit2

P1:BEGIN
--123456ABCDEF   ->123456ABCABC
--update TBL_MEM_ACC SET FILLER1 = FNC_NAME2('A');
set O_VALUE1=FNC_NAME('A');
set O_VALUE2=FNC_NAME2('A');
END P1

a) Функция FNC_NAME с объявлением 'CONTAINS_ SQL б) FNC_NAME2 функция без 'CONTAINS_ SQL объявлена ​​

функция с' CONATINS SQL '

CREATE OR REPLACE FUNCTION FNC_NAME(
IN I_ORG_STR   VARCHAR(5000)
)
RETURNS VARCHAR(20000)
SPECIFIC FNC_NAME
LANGUAGE SQL
CONTAINS SQL

BEGIN
DECLARE V_D_CNT  INTEGER;
DECLARE V_HD_CNT INTEGER;
DECLARE V_RESULT VARCHAR(20000) DEFAULT NULL;

DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
    RETURN V_RESULT;    
END;


IF  I_ORG_STR IS NULL OR I_ORG_STR = ''  THEN
    RETURN V_RESULT;
END IF;

SET V_RESULT = I_ORG_STR;

SET V_RESULT = REPLACE( V_RESULT, ' ', '' );     
SET V_RESULT = REPLACE( V_RESULT, ' ', '' );      

SET V_RESULT = REPLACE( V_RESULT, '゚', '゜' );    
SET V_RESULT = REPLACE( V_RESULT, '゙', '゛' );    

--カナ、ひら小文字
SET V_RESULT = REPLACE( V_RESULT, 'ア', 'ア' );
SET V_RESULT = REPLACE( V_RESULT, 'イ', 'イ' );
SET V_RESULT = REPLACE( V_RESULT, 'ウ', 'ウ' );
SET V_RESULT = REPLACE( V_RESULT, 'エ', 'エ' );
SET V_RESULT = REPLACE( V_RESULT, 'オ', 'オ' );
SET V_RESULT = REPLACE( V_RESULT, 'カ', 'カ' );
SET V_RESULT = REPLACE( V_RESULT, 'キ', 'キ' );
SET V_RESULT = REPLACE( V_RESULT, 'ク', 'ク' );
SET V_RESULT = REPLACE( V_RESULT, 'ケ', 'ケ' );
SET V_RESULT = REPLACE( V_RESULT, 'コ', 'コ' );
SET V_RESULT = REPLACE( V_RESULT, 'サ', 'サ' );
SET V_RESULT = REPLACE( V_RESULT, 'シ', 'シ' );
SET V_RESULT = REPLACE( V_RESULT, 'ス', 'ス' );
SET V_RESULT = REPLACE( V_RESULT, 'セ', 'セ' );
SET V_RESULT = REPLACE( V_RESULT, 'ソ', 'ソ' );
SET V_RESULT = REPLACE( V_RESULT, 'タ', 'タ' );
SET V_RESULT = REPLACE( V_RESULT, 'チ', 'チ' );
SET V_RESULT = REPLACE( V_RESULT, 'ツ', 'ツ' );
SET V_RESULT = REPLACE( V_RESULT, 'テ', 'テ' );
SET V_RESULT = REPLACE( V_RESULT, 'ト', 'ト' );
SET V_RESULT = REPLACE( V_RESULT, 'ナ', 'ナ' );
SET V_RESULT = REPLACE( V_RESULT, 'ニ', 'ニ' );
SET V_RESULT = REPLACE( V_RESULT, 'ヌ', 'ヌ' );
SET V_RESULT = REPLACE( V_RESULT, 'ネ', 'ネ' );
SET V_RESULT = REPLACE( V_RESULT, 'ノ', 'ノ' );
SET V_RESULT = REPLACE( V_RESULT, 'ハ', 'ハ' );
SET V_RESULT = REPLACE( V_RESULT, 'ヒ', 'ヒ' );
SET V_RESULT = REPLACE( V_RESULT, 'フ', 'フ' );
SET V_RESULT = REPLACE( V_RESULT, 'ヘ', 'ヘ' );
SET V_RESULT = REPLACE( V_RESULT, 'ホ', 'ホ' );
SET V_RESULT = REPLACE( V_RESULT, 'マ', 'マ' );
SET V_RESULT = REPLACE( V_RESULT, 'ミ', 'ミ' );
SET V_RESULT = REPLACE( V_RESULT, 'ム', 'ム' );
SET V_RESULT = REPLACE( V_RESULT, 'メ', 'メ' );
SET V_RESULT = REPLACE( V_RESULT, 'モ', 'モ' );
SET V_RESULT = REPLACE( V_RESULT, 'ヤ', 'ヤ' );
SET V_RESULT = REPLACE( V_RESULT, 'ユ', 'ユ' );
SET V_RESULT = REPLACE( V_RESULT, 'ヨ', 'ヨ' );
SET V_RESULT = REPLACE( V_RESULT, 'ラ', 'ラ' );
SET V_RESULT = REPLACE( V_RESULT, 'リ', 'リ' );
SET V_RESULT = REPLACE( V_RESULT, 'ル', 'ル' );
SET V_RESULT = REPLACE( V_RESULT, 'レ', 'レ' );
SET V_RESULT = REPLACE( V_RESULT, 'ロ', 'ロ' );
SET V_RESULT = REPLACE( V_RESULT, 'ワ', 'ワ' );
SET V_RESULT = REPLACE( V_RESULT, 'ヲ', 'ヲ' );
SET V_RESULT = REPLACE( V_RESULT, 'ン', 'ン' );

SET V_RESULT = REPLACE( V_RESULT, 'ァ', 'ア' );
SET V_RESULT = REPLACE( V_RESULT, 'ィ', 'イ' );
SET V_RESULT = REPLACE( V_RESULT, 'ゥ', 'ウ' );
SET V_RESULT = REPLACE( V_RESULT, 'ェ', 'エ' );
SET V_RESULT = REPLACE( V_RESULT, 'ォ', 'オ' );
SET V_RESULT = REPLACE( V_RESULT, 'ャ', 'ヤ' );
SET V_RESULT = REPLACE( V_RESULT, 'ュ', 'ユ' );
SET V_RESULT = REPLACE( V_RESULT, 'ョ', 'ヨ' );
SET V_RESULT = REPLACE( V_RESULT, 'ッ', 'ツ' );
SET V_RESULT = REPLACE( V_RESULT, 'ヮ', 'ワ' );

SET V_RESULT = REPLACE( V_RESULT, 'ァ', 'ア' );
SET V_RESULT = REPLACE( V_RESULT, 'ィ', 'イ' );
SET V_RESULT = REPLACE( V_RESULT, 'ゥ', 'ウ' );
SET V_RESULT = REPLACE( V_RESULT, 'ェ', 'エ' );
SET V_RESULT = REPLACE( V_RESULT, 'ォ', 'オ' );
SET V_RESULT = REPLACE( V_RESULT, 'ャ', 'ヤ' );
SET V_RESULT = REPLACE( V_RESULT, 'ュ', 'ユ' );
SET V_RESULT = REPLACE( V_RESULT, 'ョ', 'ヨ' );
SET V_RESULT = REPLACE( V_RESULT, 'ッ', 'ツ' );
SET V_RESULT = REPLACE( V_RESULT, 'ー', 'ー' );

SET V_RESULT = REPLACE( V_RESULT, 'ぁ', 'あ' );
SET V_RESULT = REPLACE( V_RESULT, 'ぃ', 'い' );
SET V_RESULT = REPLACE( V_RESULT, 'ぅ', 'う' );
SET V_RESULT = REPLACE( V_RESULT, 'ぇ', 'え' );
SET V_RESULT = REPLACE( V_RESULT, 'ぉ', 'お' );
SET V_RESULT = REPLACE( V_RESULT, 'ゃ', 'や' );
SET V_RESULT = REPLACE( V_RESULT, 'ゅ', 'ゆ' );
SET V_RESULT = REPLACE( V_RESULT, 'ょ', 'よ' );
SET V_RESULT = REPLACE( V_RESULT, 'っ', 'つ' );
SET V_RESULT = REPLACE( V_RESULT, 'ゎ', 'わ' );

SET V_D_CNT  = POSSTR( V_RESULT, '゛' );
SET V_HD_CNT = POSSTR( V_RESULT, '゜' );

IF V_D_CNT > 0 OR V_HD_CNT > 0 THEN
    SET V_RESULT = REPLACE( V_RESULT, 'カ゛', 'ガ' );
    SET V_RESULT = REPLACE( V_RESULT, 'キ゛', 'ギ' );
    SET V_RESULT = REPLACE( V_RESULT, 'ク゛', 'グ' );
    SET V_RESULT = REPLACE( V_RESULT, 'ケ゛', 'ゲ' );
    SET V_RESULT = REPLACE( V_RESULT, 'コ゛', 'ゴ' );

    SET V_RESULT = REPLACE( V_RESULT, 'サ゛', 'ザ' );
    SET V_RESULT = REPLACE( V_RESULT, 'シ゛', 'ジ' );
    SET V_RESULT = REPLACE( V_RESULT, 'ス゛', 'ズ' );
    SET V_RESULT = REPLACE( V_RESULT, 'セ゛', 'ゼ' );
    SET V_RESULT = REPLACE( V_RESULT, 'ソ゛', 'ゾ' );

    SET V_RESULT = REPLACE( V_RESULT, 'タ゛', 'ダ' );
    SET V_RESULT = REPLACE( V_RESULT, 'チ゛', 'ヂ' );
    SET V_RESULT = REPLACE( V_RESULT, 'ツ゛', 'ヅ' );
    SET V_RESULT = REPLACE( V_RESULT, 'テ゛', 'デ' );
    SET V_RESULT = REPLACE( V_RESULT, 'ト゛', 'ド' );

    SET V_RESULT = REPLACE( V_RESULT, 'ハ゛', 'バ' );
    SET V_RESULT = REPLACE( V_RESULT, 'ヒ゛', 'ビ' );
    SET V_RESULT = REPLACE( V_RESULT, 'フ゛', 'ブ' );
    SET V_RESULT = REPLACE( V_RESULT, 'ヘ゛', 'ベ' );
    SET V_RESULT = REPLACE( V_RESULT, 'ホ゛', 'ボ' );

    SET V_RESULT = REPLACE( V_RESULT, 'ハ゜', 'パ' );
    SET V_RESULT = REPLACE( V_RESULT, 'ヒ゜', 'ピ' );
    SET V_RESULT = REPLACE( V_RESULT, 'フ゜', 'プ' );
    SET V_RESULT = REPLACE( V_RESULT, 'ヘ゜', 'ペ' );
    SET V_RESULT = REPLACE( V_RESULT, 'ホ゜', 'ポ' );

    SET V_RESULT = REPLACE( V_RESULT, 'ウ゛', 'ヴ' );

    SET V_RESULT = REPLACE( V_RESULT, 'か゛', 'が' );
    SET V_RESULT = REPLACE( V_RESULT, 'き゛', 'ぎ' );
    SET V_RESULT = REPLACE( V_RESULT, 'く゛', 'ぐ' );
    SET V_RESULT = REPLACE( V_RESULT, 'け゛', 'げ' );
    SET V_RESULT = REPLACE( V_RESULT, 'こ゛', 'ご' );

    SET V_RESULT = REPLACE( V_RESULT, 'さ゛', 'ざ' );
    SET V_RESULT = REPLACE( V_RESULT, 'し゛', 'じ' );
    SET V_RESULT = REPLACE( V_RESULT, 'す゛', 'ず' );
    SET V_RESULT = REPLACE( V_RESULT, 'せ゛', 'ぜ' );
    SET V_RESULT = REPLACE( V_RESULT, 'そ゛', 'ぞ' );

    SET V_RESULT = REPLACE( V_RESULT, 'た゛', 'だ' );
    SET V_RESULT = REPLACE( V_RESULT, 'ち゛', 'ぢ' );
    SET V_RESULT = REPLACE( V_RESULT, 'つ゛', 'づ' );
    SET V_RESULT = REPLACE( V_RESULT, 'て゛', 'で' );
    SET V_RESULT = REPLACE( V_RESULT, 'と゛', 'ど' );

    SET V_RESULT = REPLACE( V_RESULT, 'は゛', 'ば' );
    SET V_RESULT = REPLACE( V_RESULT, 'ひ゛', 'び' );
    SET V_RESULT = REPLACE( V_RESULT, 'ふ゛', 'ぶ' );
    SET V_RESULT = REPLACE( V_RESULT, 'へ゛', 'べ' );
    SET V_RESULT = REPLACE( V_RESULT, 'ほ゛', 'ぼ' );

    SET V_RESULT = REPLACE( V_RESULT, 'は゜', 'ぱ' );
    SET V_RESULT = REPLACE( V_RESULT, 'ひ゜', 'ぴ' );
    SET V_RESULT = REPLACE( V_RESULT, 'ふ゜', 'ぷ' );
    SET V_RESULT = REPLACE( V_RESULT, 'へ゜', 'ぺ' );
    SET V_RESULT = REPLACE( V_RESULT, 'ほ゜', 'ぽ' );
END IF;


-- 英数
SET V_RESULT = TRANSLATE( V_RESULT );  

SET V_RESULT = REPLACE( V_RESULT, 'A', 'A' );
SET V_RESULT = REPLACE( V_RESULT, 'B', 'B' );
SET V_RESULT = REPLACE( V_RESULT, 'C', 'C' );
SET V_RESULT = REPLACE( V_RESULT, 'D', 'D' );
SET V_RESULT = REPLACE( V_RESULT, 'E', 'E' );
SET V_RESULT = REPLACE( V_RESULT, 'F', 'F' );
SET V_RESULT = REPLACE( V_RESULT, 'G', 'G' );
SET V_RESULT = REPLACE( V_RESULT, 'H', 'H' );
SET V_RESULT = REPLACE( V_RESULT, 'I', 'I' );
SET V_RESULT = REPLACE( V_RESULT, 'J', 'J' );
SET V_RESULT = REPLACE( V_RESULT, 'K', 'K' );
SET V_RESULT = REPLACE( V_RESULT, 'L', 'L' );
SET V_RESULT = REPLACE( V_RESULT, 'M', 'M' );
SET V_RESULT = REPLACE( V_RESULT, 'N', 'N' );
SET V_RESULT = REPLACE( V_RESULT, 'O', 'O' );
SET V_RESULT = REPLACE( V_RESULT, 'P', 'P' );
SET V_RESULT = REPLACE( V_RESULT, 'Q', 'Q' );
SET V_RESULT = REPLACE( V_RESULT, 'R', 'R' );
SET V_RESULT = REPLACE( V_RESULT, 'S', 'S' );
SET V_RESULT = REPLACE( V_RESULT, 'T', 'T' );
SET V_RESULT = REPLACE( V_RESULT, 'U', 'U' );
SET V_RESULT = REPLACE( V_RESULT, 'V', 'V' );
SET V_RESULT = REPLACE( V_RESULT, 'W', 'W' );
SET V_RESULT = REPLACE( V_RESULT, 'X', 'X' );
SET V_RESULT = REPLACE( V_RESULT, 'Y', 'Y' );
SET V_RESULT = REPLACE( V_RESULT, 'Z', 'Z' );

SET V_RESULT = REPLACE( V_RESULT, 'a', 'A' );
SET V_RESULT = REPLACE( V_RESULT, 'b', 'B' );
SET V_RESULT = REPLACE( V_RESULT, 'c', 'C' );
SET V_RESULT = REPLACE( V_RESULT, 'd', 'D' );
SET V_RESULT = REPLACE( V_RESULT, 'e', 'E' );
SET V_RESULT = REPLACE( V_RESULT, 'f', 'F' );
SET V_RESULT = REPLACE( V_RESULT, 'g', 'G' );
SET V_RESULT = REPLACE( V_RESULT, 'h', 'H' );
SET V_RESULT = REPLACE( V_RESULT, 'i', 'I' );
SET V_RESULT = REPLACE( V_RESULT, 'j', 'J' );
SET V_RESULT = REPLACE( V_RESULT, 'k', 'K' );
SET V_RESULT = REPLACE( V_RESULT, 'l', 'L' );
SET V_RESULT = REPLACE( V_RESULT, 'm', 'M' );
SET V_RESULT = REPLACE( V_RESULT, 'n', 'N' );
SET V_RESULT = REPLACE( V_RESULT, 'o', 'O' );
SET V_RESULT = REPLACE( V_RESULT, 'p', 'P' );
SET V_RESULT = REPLACE( V_RESULT, 'q', 'Q' );
SET V_RESULT = REPLACE( V_RESULT, 'r', 'R' );
SET V_RESULT = REPLACE( V_RESULT, 'e', 'E' );
SET V_RESULT = REPLACE( V_RESULT, 's', 'S' );
SET V_RESULT = REPLACE( V_RESULT, 't', 'T' );
SET V_RESULT = REPLACE( V_RESULT, 'u', 'U' );
SET V_RESULT = REPLACE( V_RESULT, 'v', 'V' );
SET V_RESULT = REPLACE( V_RESULT, 'w', 'W' );
SET V_RESULT = REPLACE( V_RESULT, 'x', 'X' );
SET V_RESULT = REPLACE( V_RESULT, 'y', 'Y' );
SET V_RESULT = REPLACE( V_RESULT, 'z', 'Z' );

SET V_RESULT = REPLACE( V_RESULT, '0', '0' );
SET V_RESULT = REPLACE( V_RESULT, '1', '1' );
SET V_RESULT = REPLACE( V_RESULT, '2', '2' );
SET V_RESULT = REPLACE( V_RESULT, '3', '3' );
SET V_RESULT = REPLACE( V_RESULT, '4', '4' );
SET V_RESULT = REPLACE( V_RESULT, '5', '5' );
SET V_RESULT = REPLACE( V_RESULT, '6', '6' );
SET V_RESULT = REPLACE( V_RESULT, '7', '7' );
SET V_RESULT = REPLACE( V_RESULT, '8', '8' );
SET V_RESULT = REPLACE( V_RESULT, '9', '9' );


SET V_RESULT = REPLACE( V_RESULT, '!', '!' );
SET V_RESULT = REPLACE( V_RESULT, '"', '”' );
SET V_RESULT = REPLACE( V_RESULT, '#', '#' );
SET V_RESULT = REPLACE( V_RESULT, '$', '$' );
SET V_RESULT = REPLACE( V_RESULT, '%', '%' );
SET V_RESULT = REPLACE( V_RESULT, '&', '&' );
SET V_RESULT = REPLACE( V_RESULT, '''', '’' );
SET V_RESULT = REPLACE( V_RESULT, '(', '(' );
SET V_RESULT = REPLACE( V_RESULT, ')', ')' );

SET V_RESULT = REPLACE( V_RESULT, '=', '=' );
SET V_RESULT = REPLACE( V_RESULT, '~', ' ̄' );
SET V_RESULT = REPLACE( V_RESULT, '|', '|' );
SET V_RESULT = REPLACE( V_RESULT, '`', '`' );
SET V_RESULT = REPLACE( V_RESULT, '{', '{' );
SET V_RESULT = REPLACE( V_RESULT, '+', '+' );
SET V_RESULT = REPLACE( V_RESULT, '*', '*' );
SET V_RESULT = REPLACE( V_RESULT, '}', '}' );
SET V_RESULT = REPLACE( V_RESULT, '<', '<' );
SET V_RESULT = REPLACE( V_RESULT, '>', '>' );
SET V_RESULT = REPLACE( V_RESULT, '?', '?' );
SET V_RESULT = REPLACE( V_RESULT, '_', '_' );

SET V_RESULT = REPLACE( V_RESULT, '-', '-' );
SET V_RESULT = REPLACE( V_RESULT, '^', '^' );

SET V_RESULT = REPLACE( V_RESULT, '@', '@' );
SET V_RESULT = REPLACE( V_RESULT, '[', '[' );
SET V_RESULT = REPLACE( V_RESULT, ';', ';' );
SET V_RESULT = REPLACE( V_RESULT, ':', ':' );
SET V_RESULT = REPLACE( V_RESULT, ']', ']' );
SET V_RESULT = REPLACE( V_RESULT, ',', ',' );
SET V_RESULT = REPLACE( V_RESULT, '.', '.' );
SET V_RESULT = REPLACE( V_RESULT, '/', '/' );
SET V_RESULT = REPLACE( V_RESULT, '\', '¥' );

SET V_D_CNT  = POSSTR( V_RESULT, '・' );
IF V_D_CNT > 0 THEN
    SET V_RESULT = REPLACE( V_RESULT, '・', '・' );
END IF;

SET V_RESULT = REPLACE( V_RESULT, '゜', '' );
SET V_RESULT = REPLACE( V_RESULT, '゛', '' );

RETURN V_RESULT;
END
@

Ответы [ 2 ]

0 голосов
/ 24 марта 2020

То, что вы пытаетесь сделать, называется нормализацией Unicode? Если да, то поможет ли это

CREATE OR REPLACE FUNCTION DB_NORMALIZE_UNICODE_NFKC (S VARCHAR(32000))
RETURNS VARCHAR(32000)
    NO EXTERNAL ACTION
    DETERMINISTIC
RETURN
    XMLCAST(XMLQUERY('fn:normalize-unicode($S, ''NFKC'' )') AS VARCHAR(32000))

https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.5.0/com.ibm.db2.luw.xml.doc/doc/xqrfnnmu.html

0 голосов
/ 24 марта 2020

Вы можете не использовать составной оператор в своей функции, а просто использовать один оператор. Например,

CREATE OR REPLACE FUNCTION HALF_WIDTH_TO_FULL_WIDTH(X VARCHAR(5000))
RETURNS VARCHAR(5000)
LANGUAGE SQL CONTAINS SQL DETERMINISTIC NO EXTERNAL ACTION
RETURN
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
 X
,' ', '' )     
, ' ', '' )      
--
, '゚', '゜' )    
, '゙', '゛' )    
--
, 'ア', 'ア' )
, 'イ', 'イ' )
, 'ウ', 'ウ' )
, 'エ', 'エ' )
, 'オ', 'オ' )
, 'カ', 'カ' )
, 'キ', 'キ' )
, 'ク', 'ク' )
, 'ケ', 'ケ' )
, 'コ', 'コ' )
, 'サ', 'サ' )
, 'シ', 'シ' )
, 'ス', 'ス' )
, 'セ', 'セ' )
, 'ソ', 'ソ' )
, 'タ', 'タ' )
, 'チ', 'チ' )
, 'ツ', 'ツ' )
, 'テ', 'テ' )
, 'ト', 'ト' )
, 'ナ', 'ナ' )
, 'ニ', 'ニ' )
, 'ヌ', 'ヌ' )
, 'ネ', 'ネ' )
, 'ノ', 'ノ' )
, 'ハ', 'ハ' )
, 'ヒ', 'ヒ' )
, 'フ', 'フ' )
, 'ヘ', 'ヘ' )
, 'ホ', 'ホ' )
, 'マ', 'マ' )
, 'ミ', 'ミ' )
, 'ム', 'ム' )
, 'メ', 'メ' )
, 'モ', 'モ' )
, 'ヤ', 'ヤ' )
, 'ユ', 'ユ' )
, 'ヨ', 'ヨ' )
, 'ラ', 'ラ' )
, 'リ', 'リ' )
, 'ル', 'ル' )
, 'レ', 'レ' )
, 'ロ', 'ロ' )
, 'ワ', 'ワ' )
, 'ヲ', 'ヲ' )
, 'ン', 'ン' )
--
, 'ァ', 'ア' )
, 'ィ', 'イ' )
, 'ゥ', 'ウ' )
, 'ェ', 'エ' )
, 'ォ', 'オ' )
, 'ャ', 'ヤ' )
, 'ュ', 'ユ' )
, 'ョ', 'ヨ' )
, 'ッ', 'ツ' )
, 'ヮ', 'ワ' )
--
, 'ァ', 'ア' )
, 'ィ', 'イ' )
, 'ゥ', 'ウ' )
, 'ェ', 'エ' )
, 'ォ', 'オ' )
, 'ャ', 'ヤ' )
, 'ュ', 'ユ' )
, 'ョ', 'ヨ' )
, 'ッ', 'ツ' )
, 'ー', 'ー' )
--
, 'ぁ', 'あ' )
, 'ぃ', 'い' )
, 'ぅ', 'う' )
, 'ぇ', 'え' )
, 'ぉ', 'お' )
, 'ゃ', 'や' )
, 'ゅ', 'ゆ' )
, 'ょ', 'よ' )
, 'っ', 'つ' )
, 'ゎ', 'わ' )

Я не включил ваш IF V_D_CNT > 0 OR V_HD_CNT > 0 THEN logi c, но он также может быть включен (через CASE) или с помощью второй функции, которая использует первый

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...