테이블구조를 볼수가 없어서 자세히는 말씀드리기 모하지만
아래구문으로 볼때
select a.ya_a02 acc_code, (sum(a.ya_a03) + sum(a.ya_a04)) j_kum, g.ac_a04 bunho
a.ya_a03등의 필드타입이 DOUBLE PRECISION이나 NUMERIC같은데
변수값들도 같은 타입으로 정해주시는것이 좋을것같습니다.
음수처리부분도 캐릭터 타입이 아닌 숫자타입으로 정해주면 쉽게 구현가능할듯 싶구요
문자타입에서 '-' + ya_a04 <- 이건 에러납니다.
'-' || ya_a04 이렇게 구현해줘야 합니다. 그런데 이건 그냥 문자표현이라서...
변수를 선언한후에 사용을 안하셔서 나머지부분은 모라 말씀드리기 힘드네요..에궁..
테이블 구조도 같이 첨부해서 질문해주시면 답변이 빨리 올라올듯싶습니다.^^
미러 님이 쓰신 글 :
: 밑을 보시면 알수 있듯이 많은 에러를 가지고 있는 프로시져입니다.
: 제가 할려고 한것은 g.ac_a04가 1이거나 1이 아닐때 a.ya_a03 혹은 a.ya_a04의 값을 음수로 줘서
: 그 두 값을 더해 하나로 나오게 하고 싶습니다.
: sum 부분도 이상하고 그리고 밑에 나올때 제가
: if (rtrim(:rac_a04) = '1') then
: ya_a04 ='-' + ya_a04;
: if (rtrim(:rac_a04) <> '1') then
: ya_a03 ='-' + ya_a03;
: 이부분을 첨가를 했거든요. 물론 into :acc_code, :j_kum, :bunho 여기 바로 밑으로염
: 당연히 에러는 났구염..
: 이걸 해결해야 다음 프로시져를 짤수 있는데...계속 해메고 있습니다. 도와주세요
:
:
:
:
:
:
: CREATE PROCEDURE DACC_SUPP_01 (
: YYMMDD1 CHAR(8) CHARACTER SET NONE,
: CODE1 CHAR(6) CHARACTER SET NONE,
: CODE2 CHAR(6) CHARACTER SET NONE)
: RETURNS (
: ACC_CODE CHAR(6) CHARACTER SET NONE,
: J_KUM NUMERIC(15,2),
: BUNHO CHAR(1) CHARACTER SET NONE)
: AS
: DECLARE VARIABLE RAC_A04 CHAR(1);
: begin
: for
: select a.ya_a02 acc_code, (sum(a.ya_a03) + sum(a.ya_a04)) j_kum, g.ac_a04 bunho
: from year_acccode a
: left outer join acccode g on a.ya_a02 = g.ac_a01
: where a.ya_a01 = substr(:yymmdd1,1,4) and
: (a.ya_a02 between :code1 and :code2) and
: (a.ya_a03 <> 0) and (a.ya_a04 <> 0)
: group by a.ya_a02
: into :acc_code, :j_kum, :bunho
:
: do
:
: suspend;
: end
|