신승욱 님이 쓰신 글 :
: 김백일 님이 쓰신 글 :
: : 신승욱 님이 쓰신 글 :
: : : 예를 들어서 sql문에서 상품의 재고를 산출할때 inout필드가 1이면 입고,2이면 출고입니다.
: : : 그래서 inout가 1이면 재고를 더하고 2이면 재고를 빼서 현재 재고를 산출할려고 합니다.
굳이 SELECT만으로 해결하고 싶으시다면,
간단한 방법이 막 생각났네요.
inout 필드를 입고면 +1, 출고면 -1로 해서 곱하면 되겠군요.
굳이 1, 2로 써야 한다면
2 * (1.5 - 1) = 1
2 * (1.5 - 2) = -1
로 하면 되겠군요.
: : : select ????? from goods
: : : 어떻게 해야되는지요...부탁드려요~~
: :
: : Stored Procedure의 IF ... THEN ... ELSE 구문을 이용하면 됩니다.
: : 그외에 FOR SELECT ... DO와 SUSPEND 구문을 쓰시면
: : Stored Procedure는 View와 똑같은 식으로 다루실 수 있습니다.
: :
: : 그런데 위의 상황은 좀 이해가 안되는 군요.
: : 보통 입고량은 양수값, 출고량은 음수값으로 하지 않나요?
: : 그럼 그냥 더하기만 하면 될텐데요.
:
: 먼저 답변 감사드립니다..
: 저도 그냥 입고는 양수,출고는 음수 하고접은데....(아마도 수량을 양수로하고..음수일경우 반품처리를 하기 위해서인듯....)
: 지금 프로그램 모디파이하는 중이라서리~~
: 그걸 바꿀려니 많이 수정해야될것같아서~(ㅡ,.ㅡ;;)
:
: 다른 디비(ms-sql등등)처럼 sql문을 써서 만들수는 없나요??
: 함수가 지원되지 않는가요?? udf파일을 인스톨해준다던지....(ib_udf.sql은 해봣는데 원하는 함수가 없더군요) Stored Procedure 는 써본적이 없어서리~~헝헝헝
Stored Procedure는 그리 어렵지 않습니다.
굳이 예제를 들어본다면...
CREATE PROCEDURE GET_EMP_PROJ (EMP_NO SMALLINT)
RETURNS (PROJ_ID CHAR(5))
AS
BEGIN
FOR SELECT PROJ_ID
FROM EMPLOYEE_PROJECT
WHERE EMP_NO = :EMP_NO
INTO :PROJ_ID
DO
SUSPEND;
END
이렇게 해서 프로시저를 등록한 뒤
사원 번호가 52인 사람의 프로젝트 ID 목록을 얻으시려면
SELECT *
FROM GET_EMP_PROJ(52);
간단하죠?
Stored Procedure를 잘 쓰면 상당한 속도 향상을 얻을 수 있습니다.
그럼... 즐프들~~
|