Informix SQL の「isql」コマンドを使用して、IBM Informix Dynamic Server バージョン 10.00.FC9 でこのストアド プロシージャを作成する際に問題が発生しました (この投稿に対する Jonathan Leffler の回答を参照) 。
(
近くの彼の2つの例のそれぞれについて、文字でエラーが発生しますRETURNING CHAR(8)
元。1:
CREATE PROCEDURE ampm_time(tm SMALLINT) RETURNING CHAR(8);
DEFINE hh SMALLINT;
DEFINE mm SMALLINT;
DEFINE am SMALLINT;
DEFINE m3 CHAR(3);
DEFINE a3 CHAR(3);
LET hh = MOD(tm / 100 + 11, 12) + 1;
LET mm = MOD(tm, 100) + 100;
LET am = MOD(tm / 1200, 2);
LET m3 = mm;
IF am = 0
THEN LET a3 = ' am';
ELSE LET a3 = ' pm';
END IF;
RETURN (hh || ':' || m3[2,3] || a3);
END PROCEDURE;
元。2:
CREATE PROCEDURE ampm_time(tm SMALLINT) RETURNING CHAR(8);
DEFINE i2 SMALLINT;
DEFINE hh SMALLINT;
DEFINE mm SMALLINT;
DEFINE am SMALLINT;
DEFINE m3 CHAR(3);
DEFINE a3 CHAR(3);
LET i2 = tm / 100;
LET hh = MOD(i2 + 11, 12) + 1;
LET mm = MOD(tm, 100) + 100;
LET i2 = tm / 1200;
LET am = MOD(i2, 2);
LET m3 = mm;
IF am = 0
THEN LET a3 = ' am';
ELSE LET a3 = ' pm';
END IF;
RETURN (hh || ':' || m3[2,3] || a3);
END PROCEDURE;
それらは、リンクされた投稿で私が尋ねた質問を解決するために、Jonathan Leffler (Informix Magician extraordinaire) によって設計されました。目的の戻り値は、軍事時間を保持する INT データ型を午後 2 時 30 分型の形式に変換することです。