FireBird Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
파이어버드 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
IBPhoenix
FireBird Main site
볼랜드포럼 광고 모집

FireBird Q&A
[3341] Procedure실행 시 'Problem in BindingCursor'라고 뜨는데 무슨 의미 인지여..??
아슬아슬한세자리 [smbg11] 2291 읽음    2010-01-06 09:46
IBOCONSOL에서 실행을 했는데

프로시저 내부 UPDATE는 잘 된듯 한데..
'Problem in BindingCursor'라고 메시지가 뜨네요...

왜 저런 메시지가 뜨는것인지 모르겠습니다..

그럼 아시는분 리플 부탁 드립니다..(__)

프로시저 실행
execute procedure "PadBadDataUpdate"('new,'yrty45745','00000193','0','C1608', 'P1608')

이하는 Create Procedure 구문 입니다..
COMMIT WORK;
SET AUTODDL OFF;
SET TERM ^ ;

/* Stored procedures */

CREATE PROCEDURE "PadBadDataUpdate"
(
  "ARGEQID" VARCHAR(30),
  "ARGMODELID" VARCHAR(50),
  "ARGBOARDID" VARCHAR(50),
  "ARGMODULEID" INTEGER,
  "ARGPARTID" VARCHAR(30),
  "ARGPADID" VARCHAR(50)
)
AS
BEGIN EXIT; END ^


ALTER PROCEDURE "PadBadDataUpdate"
(
  "ARGEQID" VARCHAR(30),
  "ARGMODELID" VARCHAR(50),
  "ARGBOARDID" VARCHAR(50),
  "ARGMODULEID" INTEGER,
  "ARGPARTID" VARCHAR(30),
  "ARGPADID" VARCHAR(50)
)
AS
begin
    Begin
        -- Pad_Raw_Data 'P' 로 Update
        Update Pad_Raw_Data Set JudgeMent = 'P' Where EQ_ID = :argEQID and Model_ID = :argModelID and Board_ID = :argBoardID and Module_ID = :argModuleID and Part_ID = :argPartID and Pad_ID = :argPadID;
        -- Pad_Bad_Data Delete
        Delete From Pad_Bad_Data Where EQ_ID = :argEQID and Model_ID = :argModelID and Board_ID = :argBoardID and Module_ID = :argModuleID and Part_ID = :argPartID and Pad_ID = :argPadID;
        -- Pad_Error_Data 의 Error_Count 에서 1을 뺀다..
        Update Pad_Error_Data Set Error_Count = Error_Count - 1 Where EQ_ID = :argEQID and Model_ID = :argModelID and Module_ID = :argModuleID and Part_ID = :argPartID and Pad_ID = :argPadID;
        -- Part_Result의 Good_Pad_Number 에서 1을 더하고, Error_Pad_Number 에서 1을 뺀다.
        Update Part_Result Set Good_Pad_Number = Good_Pad_Number + 1, Error_Pad_Number = Error_Pad_Number - 1
        Where EQ_ID = :argEQID and Model_ID = :argModelID and Board_ID = :argBoardID and Module_ID = :argModuleID and Part_ID = :argPartID;
        -- 이후에 해당 Part의 Pad에 Error난 Pad가 없으면 Part_Result를 'P'로 변경한다.
        Update Part_Result Set Part_Result = (Select Case When Count(*) > 0 Then 'X' Else 'P' End From Pad_Bad_data Where EQ_ID = :argEQID and Model_ID = :argModelID and Board_ID = :argBoardID and Module_ID = :argModuleID and Part_ID = :argPartID )
        Where EQ_ID = :argEQID and Model_ID = :argModelID and Board_ID = :argBoardID and Module_ID = :argModuleID and Part_ID = :argPartID;
            -- Module_Result의 Good_Pad_Number 에서 1을 더하고, Error_Pad_Number 에서 1을 뺀다.
        Update Module_Result Set Good_Pad_Number = Good_Pad_Number + 1, Error_Pad_Number = Error_Pad_Number - 1
        Where EQ_ID = :argEQID and Model_ID = :argModelID and Board_ID = :argBoardID and Module_ID = :argModuleID;
        -- 이후에 해당 Part의 Pad에 Error난 Pad가 없으면 Part_Result를 'P'로 변경한다.
        Update Module_Result Set Module_Result = (Select Case When Count(*) > 0 Then 'X' Else 'P' End From Part_Result Where EQ_ID = :argEQID and Model_ID = :argModelID and Board_ID = :argBoardID and Module_ID = :argModuleID and Part_Result = 'X' )
        Where EQ_ID = :argEQID and Model_ID = :argModelID and Board_ID = :argBoardID and Module_ID = :argModuleID;
        -- Board_Result의 Pad_Good 에서 1을 더하고, Pad_Error 에서 1을 뺀다.
        Update Board_Result Set Pad_Good = Pad_Good + 1, Pad_Error = Pad_Error - 1
        Where EQ_ID = :argEQID and Model_ID = :argModelID and Board_ID = :argBoardID;
        -- 이후에 해당 Part의 Pad에 Error난 Pad가 없으면 Part_Result를 'P'로 변경한다.
        Update Board_Result Set Board_Result = (Select Case When Count(*) > 0 Then 'X' Else 'P' End From Module_Result Where EQ_ID = :argEQID and Model_ID = :argModelID and Board_ID = :argBoardID and Module_Result = 'X' )
        Where EQ_ID = :argEQID and Model_ID = :argModelID and Board_ID = :argBoardID;
        -- Model_Result의 board_inspected가 제일 큰 값에서
        -- Good_Pad_Number 에서 1을 더하고, Error_Pad_Number 에서 1을 뺀다.
        -- Module의 결과에 따라서 Module_Pass,Module_NG에도 Update한다.
        Update Model_Result
            Set Pad_Total_Good = Pad_Total_Good + 1,
                Pad_Total_Error = Pad_Total_Error - 1,
                Module_Pass = Module_Pass + (select case when Module_Result = 'P' then 1 else 0 end from Module_result Where EQ_ID = :argEQID and model_Id = :argModelID and board_id = :argBoardID and Module_Id = :argModuleID ),
                Module_NG = Module_NG + (select case when Module_Result = 'P' then -1 else 0 end from Module_result Where EQ_ID = :argEQID and model_Id = :argModelID and board_id = :argBoardID and Module_Id = :argModuleID),
                Board_Pass = Module_Pass + (select case when Board_Result = 'P' then 1 else 0 end from Board_result Where EQ_ID = :argEQID and model_Id = :argModelID and board_id = :argBoardID ),
                Board_NG = Board_NG + (select case when Board_Result = 'P' then -1 else 0 end from Board_result Where EQ_ID = :argEQID and model_Id = :argModelID and board_id = :argBoardID )
        Where  EQ_ID = :argEQID and Model_ID = :argModelID and board_inspected = ( select max(board_inspected) from model_result Where model_Id = :argModelID );
    End
end
^

SET TERM ; ^
COMMIT WORK;
SET AUTODDL ON;

+ -

관련 글 리스트
3341 Procedure실행 시 'Problem in BindingCursor'라고 뜨는데 무슨 의미 인지여..?? 아슬아슬한세자리 2291 2010/01/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.