80 文字を超える文字列値を格納しようとしているときに、特有の問題に直面しています。ストアド プロシージャで、文字列を Varchar(100) として定義し、80 文字を超える値を割り当てました。
割り当てられた文字列の長さが 80 文字未満の場合、問題なく動作しています。長さが 79 文字を超える場合、文字列の切り捨てエラーが発生します。
CREATE OR ALTER PROCEDURE TEST_PROCEDURE returns (vals varchar(3))
as
declare variable Vallen integer;
declare variable pos integer;
declare variable val varchar(3);
declare variable distinct_Vals varchar(100);
begin
distinct_Vals = '123 456 789 012 345 678 901 234 567 890 123 456 789 012 345 678 901 234 567 890 1';
valLEN = UDF_STRLEN(distinct_Vals);
POS = 1;
WHILE ( :POS < :ValLen) DO
BEGIN
Val = UDF_SUBSTRLEN(:distinct_Vals,:POS,3);
POS = POS + 4;
Vals = :Val;
suspend;
end
end
一時停止は、個々の値を表示するだけです
ISO8859_1 文字セットの Firebird 2.5 を使用しています。
どんな助けや提案も大歓迎です。
よろしく、スリアン。