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

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


Category

  김영대(2003-03-04 20:39:42, Hit : 5121, Vote : 1335
  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('잘못된 인수를 서버에 전달했습니다.');





971   [네트웍/인터넷] Internet에 연결중인지 여부를 알려면...  김영대 2003/03/04 5393 1397
970   [윈도우즈 API] 델파이 3.0에서 한글변환을 하는법....  김영대 2003/03/04 6245 1489
969   [시스템] 떠 있는 프로그램 죽이기...  김영대 2003/03/04 6138 1468
968   [시스템] 다른 Application 생성과 소멸에 대하여...  김영대 2003/03/04 5024 1366
967   [윈도우즈 API] 도구모음 Bar는 어떻게 만드는지...  김영대 2003/03/04 4910 1387
966   [일반/컴포넌트] StringGrid의 Cell에 입력 값 제한 하기  김영대 2003/03/04 6380 1338
965   [데이터베이스] DB의 Blob필드에 화일을 저장하기  김영대 2003/03/04 5304 1288
964   [시스템] Windows NT 에서 한글 NT인지 영문 NT인지 구분하는 방법  김영대 2003/03/04 6968 1409
963   [시스템] 오직 하나의 프로그램만 실행...  김영대 2003/03/04 5260 1415
962   [데이터베이스] TBlobField에 대한 사용법  김영대 2003/03/04 5163 1325
961   [멀티미디어] TMedia Player에서 BMP파일로 저장하기(화면 capture)  김영대 2003/03/04 4790 1319
960   [일반/컴포넌트] StringGrid에서 Enter Key를 Tab Key와 같은 효과  김영대 2003/03/04 5505 1255
  [데이터베이스] Stored Procedure 작성을 어떻게 하나  김영대 2003/03/04 5121 1335
958   [윈도우즈 API] 날짜변형에 대해서...  김영대 2003/03/04 5078 1276
957   [윈도우즈 API] 델파이에서 시간을 기다리는 함수  김영대 2003/03/04 6404 1416
956   [데이터베이스] DBGrid에서 MultiSelect된것 알아내려면...  김영대 2003/03/04 5848 1316
955   [윈도우즈 API] 외부 프로그램의 윈도우 크기 조절  김영대 2003/03/04 5402 1332
954   [윈도우즈 API] 클립보드로 복사  김영대 2003/03/04 5878 1472
953   [일반/컴포넌트] VB Left$(), Right$(), LTrim$() ...  김영대 2003/03/04 4992 1251
952   [윈도우즈 API] 화면캡처하기 Delphi3.0에서...  김영대 2003/03/04 4904 1327
951   [데이터베이스] 엑셀자료를 읽어서 DB에 UPDATE  김영대 2003/03/04 5377 3605
950   [시스템] 프린터 상태가 Ready인지 아닌지 검사  김영대 2003/03/04 6107 1851
949   [데이터베이스] DBGrid 에서 선택된 필드의 타이틀을 굵게  김영대 2003/03/04 4917 1356
948   [윈도우즈 API] bitmap을 JPEG로 변환  김영대 2003/03/04 5130 1389
947   [데이터베이스] DBGrid의 Column, Record 의 위치 저장/이동  김영대 2003/03/04 10908 2221
946   [데이터베이스] ORACLE 나 SQL Server 에서 레코드 번호  김영대 2003/03/04 5219 1328
945   [윈도우즈 API] 키보드의 임의키 발생  김영대 2003/03/04 5654 1399
944   [데이터베이스] BDE 버전정보  김영대 2003/03/04 4227 1190
943   [일반/컴포넌트] 문자열의 암호화(Password 처리)  김영대 2003/03/04 4538 1134
942   [일반/컴포넌트] Image의 90도 회전  김영대 2003/03/04 5443 1219
941   [윈도우즈 API] 파일정보(생성,변경,접근일자,속성,종류...)  김영대 2003/03/04 5599 1307
940   [윈도우즈 API] 윈도우즈 탐색기와의 연동  김영대 2003/03/04 5877 1397
939   [시스템] 절약형 모니터의 켜기/끄기  김영대 2003/03/04 4868 1357
938   [시스템] 드라이브 포맷(Format) API 함수  김영대 2003/03/04 4904 1338
937   [일반/컴포넌트] virtual keys 리스트  김영대 2003/03/04 4299 1239
936   [윈도우즈 API] short/long file name 변환  김영대 2003/03/04 4374 1289
935   [일반/컴포넌트] 메뉴 아이템의 동적 추가와 그림넣기  김영대 2003/03/04 7856 1253
934   [윈도우즈 API] 파일의 확장명으로 실행화일 연결  김영대 2003/03/04 5177 1379
933   [시스템] CD-ROM 문 열기/닫기  김영대 2003/03/04 4921 1413
932   [일반/컴포넌트] QReport에서 출력된 자료를 Text화일로 저장  김영대 2003/03/04 4608 1267

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

Copyright 1999-2021 Zeroboard / skin by zero