Informix SQL의 'isql'명령을 사용하여 IBM Informix Dynamic Server 버전 10.00.FC9 (이 게시물에 대한 Jonathan Leffler의 답변 here 참조)에서이 저장 프로 시저를 만드는 데 문제가 있습니다.ISQL 명령을 사용하여 Informix 저장 프로 시저를 만들 수 없습니까?
나는 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;
ex. 2 :
그들은 내가 링크 된 게시물에 묻는 문제를 해결하기위한 노력의 일환으로 조나단 레플러 (Informix의 마술사 비범)에 의해 설계되었습니다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;
. 의도 한 결과는 군사 시간을 유지하는 INT 데이터 유형을 오후 2시 30 분 형식 형식으로 변환하는 것입니다.
IDS 10.00을 사용하는 경우 i2 변수없이 SP 버전을 사용할 수 있습니다. ISQL의 버전은 7.32 또는 7.31 또는 7.30 일 수도 있습니다. 현재 버전은 7.50이고, 7.32는 나쁘게 오래된 버전이 아닙니다. –
어쩌면 informix가 v7.3이라고 생각한 이유는 무엇일까 ... 지금은 약 1 년 동안이 시스템을 사용해 왔지만, 일이 끝나면 버전을 신경 쓰지 않아도됩니다. – CheeseConQueso
그 이유는 혼란스러워. 또한 (나 같은) 누군가가 버전을 묻는 경우 버전 번호 정보를 제공하면 상황을 파악하는 데 도움이되는 이유이기도합니다. FWIW : ISQL 7.50으로 업그레이드해도 'isql이 저장 프로 시저를 좋아하지 않습니다.'라는 문제가 해결되지 않습니다. 또한 IDS 10.00은 이제 지원되는 가장 오래된 버전의 IDS임을 기억하십시오. 당신은 최신 버전 중 하나에 있지만, IDS 업그레이드는 내년 정도의 계획에 있어야합니다. –