: 미러 님이 쓰신 글 :
: : 밑을 보시면 알수 있듯이 많은 에러를 가지고 있는 프로시져입니다.
: : 제가 할려고 한것은 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
인터베이스 문법을 좀 더 아셔야 될 듯...
: +변수명은 SQL문 내에서 필드명과 변수명을 구분하기 위해서 사용.
SQL문내가 아니면 :사용 안해도 됩니다.
그리고 SUSPEND 는 return 값이 있을 경우 fetch해줍니다. select를 사용하여
할 경우에 suspend에서 fetch해서 결과값을 리턴해줍니다.
여기서는
for select....from table_name into 변수명...
do
begin
if (조건) then
begin
output 변수 = 값;
end else
begin
output 변수 = 값;
end
suspend;
end;
일케하시면 조건에 따라 결과를 리턴할 수 있습니다.
|