::: 델파이 Tip&Trick :::

델파이 Tip&Trick 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2003-03-04 20:39:42, Hit : 4883, Vote : 1260
  Stored Procedure 작성을 어떻게 하나


안녕하세요.  김영대입니다.

TStoredProcedure의 사용법은 해당 DMBS의 Stored Procedure의 작성법에
있어서 약간씩 차이가 있습니다.
먼저 DB서버의 매뉴얼을 참고하여 Stored Procedure를 만들어 놓습니다.
다음은 ORACLE에서 Stored Procedure를 만들어 본 예제입니다.

create or replace procedure stprc_update_data
(
  i_name    in  varchar2,     -- 성명(C -> S로 넘기는 인수(in))
  i_btdate  in  varchar2,     -- 날짜(C -> S로 넘기는 인수(in))
  io_flag   in out  varchar2  -- 실행결과(C <-> S간의 자료전달 인수(in out))
) is
cursor c1 is select a.btcode
             from master a    -- i_name에 해당하는 자료를 select하여 커서생성
             where a.name = i_name;
begin
  io_flag := '1';
  if i_name is null then -- 잘못된 인수이면 실행종료
     io_flag := '0';     -- 잘못된 인수임을 C(클라이언트)에 알리는 인수
     return;
  end if;

  for a1 in c1 loop  -- 커서의 where 기능
     update detail b
     set b.btdate = i_btdate  -- 날짜를 update
     where (b.name   = i_name) and
           (b.btcode = a1.btcode);
  end loop;
end;


클라이언트 프로그램은 Date Access 탭의 StoredProc 컴포넌트로,
우선 DataBaseName를 설정하고 StoredProcName을 클릭하면 DB에 만들어져 있는
Stored Procedure 이름들이 나열되고 사용하려는 하나를 선택합니다.
원하는 프로시저를 선택하고 파라미터(인수) 지정, 호출, return값 받기는
아래의 예와 같습니다.

StoredProc1.params[0].AsString := '홍길동';    {위의 i_name}
StoredProc1.params[1].AsString := '19970901';  {위의 i_btdate}
StoredProc1.ExecProc;  {호출}
if StoredProc1.params[2].AsString = '0' then   {위의 io_flag, return값 비교}
   Showmessage('잘못된 인수를 서버에 전달했습니다.');





651   [일반/컴포넌트] RichEdit 에 URL link 만들기  김영대 2004/08/04 5761 1286
650   [일반/컴포넌트] TOpenDialog 의 '선택','취소' 버튼 이름 바꾸기  김영대 2003/03/07 4149 1286
649   [윈도우즈 API] 다른 프로그램의 구동 디렉토리 알아내기  김영대 2003/03/07 4759 1285
648   [윈도우즈 API] Windows Desktop에 직접 그림을 그리고(draw) 지우기(refresh)  김영대 2003/03/04 4567 1285
647   [윈도우즈 API] 윈도우즈 탐색기에서 "Copy" 될 파일목록 구하기  김영대 2003/03/07 4854 1284
646   [시스템] 윈도우즈 화면 잠그기  김영대 2004/08/03 5049 1283
645   [시스템] 절약형 모니터의 켜기/끄기  김영대 2003/03/04 4662 1282
644   [일반/컴포넌트] Access Violation at address ?????? 로부터 소스위치 알기  김영대 2003/03/07 6346 1281
643   [시스템] 파일이 다른 프로그램에 의해 사용중인지 검사  김영대 2003/03/07 5655 1280
642   [일반/컴포넌트] Treeview의 수평 스크롤바 감추고 스크롤 막기  김영대 2006/03/22 5588 1278
641   [네트웍/인터넷] FTP로 특정 파일의 권한(site chmod) 변경하기  김영대 2004/10/09 5592 1278
640   [시스템] 드라이브 포맷(Format) API 함수  김영대 2003/03/04 4706 1278
639   [윈도우즈 API] PrintScreen(PrtSc)키의 동작 막기  김영대 2003/03/07 5695 1277
638   [일반/컴포넌트] 객체의 valid검사 Assigned() 대체  김영대 2005/07/29 4861 1276
637   [COM/OLE] 윈도우즈 "인터넷 등록 정보" 화면  김영대 2004/07/25 4093 1276
636   [시스템] 프로그램에서 화면모드 변경하기  김영대 2003/03/04 4651 1276
635   [일반/컴포넌트] ListView의 타이틀 폰트 바꾸기  김영대 2005/03/31 5334 1274
634   [일반/컴포넌트] MIME 타입에 해당하는 파일 확장자 구하기  김영대 2004/11/18 4764 1274
633   [윈도우즈 API] 전체 화면(Full Screen) 만들기  김영대 2003/03/29 4976 1273
632   [일반/컴포넌트] 명령행 인자(command line argument) 사용하기  김영대 2003/03/05 4650 1273
631   [일반/컴포넌트] StringGrid의 Cell에 입력 값 제한 하기  김영대 2003/03/04 5783 1272
630   [시스템] 파일의 소유자와 도메인 구하기2  김영대 2004/09/25 4687 1271
629   [일반/컴포넌트] 해상도(screen resolution)를 변경했는지 검사  김영대 2003/03/07 4465 1271
628   [윈도우즈 API] 4가지 윈도우즈 관련 폴더의 path 구하기  김영대 2003/04/08 5620 1270
627   [윈도우즈 API] Canvas의 색상수  김영대 2003/03/04 4093 1269
626   [COM/OLE] TWebBrowser에서 JavaScript 호출하기2  김영대 2004/10/10 6075 1268
625   [COM/OLE] IE의 속성을 변경하여 뛰우기  김영대 2006/02/28 5418 1266
624   [네트웍/인터넷] 네트워크 공유 설정/공유 사용 권한/해제 하기 (Windows NT/2000)  김영대 2004/11/06 5473 1266
623   [COM/OLE] ActiveForm의 OnDestroy 대용  김영대 2005/04/21 5399 1265
622   [시스템] 윈도우즈에 설치된 모든 인증서(certificate) 정보 읽어오기  김영대 2004/10/29 5660 1264
621   [윈도우즈 API] 화면캡처하기 Delphi3.0에서...  김영대 2003/03/04 4687 1264
620   [윈도우즈 API] 떠있는 모든 Microsoft Internet Explorer 죽이기  김영대 2003/03/29 4465 1262
619   [시스템] 한글 한 음절을 초성,중성,종성 음소로 분해하기('김' => 'ㄱ'+'ㅣ'+'ㅁ')  김영대 2004/10/22 7829 1261
618   [일반/컴포넌트] TPanel, TImage 에 Gradient 효과 주기  김영대 2003/03/07 4332 1261
617   [COM/OLE] TWebBroswer 에서 오른쪽 마우스 클릭 막기  김영대 2004/11/24 5056 1260
616   [일반/컴포넌트] 키보드의 Shift+Tab 이 눌린것처럼 처리하기  김영대 2003/04/14 4559 1260
615   [윈도우즈 API] Windows error beep 켜기/끄기  김영대 2003/03/07 4420 1260
  [데이터베이스] Stored Procedure 작성을 어떻게 하나  김영대 2003/03/04 4883 1260
613   [시스템] 로컬 가상 드라이버(substitution device) 만들고 제거하기  김영대 2004/07/25 5469 1259
612   [일반/컴포넌트] 두개의 RichEdit 사이에 내용 복사하기  김영대 2003/03/06 5358 1259

[1][2][3][4][5][6][7][8] 9 [10]..[25] [다음 10개]
 

Copyright 1999-2019 Zeroboard / skin by zero