Q&A

  • 데이타 베이스에서 테이블 찾기~


MS SQL의 데이타 베이스에서 특정 테이블이 있는지 검색하는
함수나 명령문이 있나요?

테이블이 있는지 검사해서 없으면 새로 생성해줄려고 합니다.

선배님~ 부탁드립니다... ㅠ.ㅠ
2  COMMENTS
  • Profile
    KDDG_Hoya 2002.11.30 03:14
    방법은 있습니다.
    ^^*

      ms-sql은
      님의 만든 테이블 및 저장프로시져 정보를
      시스템 테이블인 sysobjects 테이블에 기록합니다.
      (이 테이블은 님이 만드신 데이타 베이스안에 있습니다.)

      테이블을 보면
      필드가 name에 만든어진 테이블 이름이 있죠.
      거기서 id 테이블의 고유 번호 입니다. ^^
      만약 그테이블의 필드 정보를 볼려면
      syscolumns 테이블을 id 로 조인하면 그테이블 필드 정보를
      보실수 있습니다.

    ex) 이 예제는 테이블이 존재하면 테이블을 드롭하고 다시 만드는 예제입니다.
          이걸 저장 프로시저로 만들면 간단하겠죠..


    if exists (select * from dbo.sysobjects where id = object_id(N'테이블명') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table 테이블명

    GO

    CREATE TABLE 테이블명 (
            [item_code_id] [int] IDENTITY (1, 1) NOT NULL ,
                     ................
                    ) ON [PRIMARY]
    GO

    delphi 에서 function으로 처리하면....
    // 이건 존재하면 true, 안하면 false

    function table_info(tname : string) : boolean;
    var i : integer;
    begin
       with query1 do begin
           close;
           sql.clear;
           sql.add('select coalesce(count(*), 0) as info from dbo.sysobjects '+
                ' where id =  object_id(N'''+tname+''') and  '+
               '  OBJECTPROPERTY  (id, N'IsUserTable') = 1');
           open;
            i := fields[0].asinteger
            close;
        end;
       if i = 0 then result := false
            else result := true;
    end;

    흐미..  제가 정리하면서두 허접 하네요..^^ 걍 참고만 하시길..
      델파이 부문은 실행해 보지 않아서....^^;










      
  • Profile
    권대경 2002.11.30 06:37
    선배님 정말 고맙습니다.
    선배님 덕분에 발뻗고 잘 수 있을것 같네요~~

    이렇게 시원 할 수가 있나요..!!  

    다시한번 감사드립니다...
    • 하얀까마귀
      2002.12.03 04:01
      안녕하세요 하얀까마귀 입니다. SetLocalTime 이라는 함수가 있거든요.. 이걸 이용하시면 가능하실것 같...
    • 이규하
      2010.04.27 19:05
      아래와 같은 코드로 성공 했습니다. Get_Date_Time_Format 은 select to_char(sysdate, ''MM/DD/Y...
    • 김영습
    • 2002.12.02 21:22
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이중철
      2002.12.02 22:18
      이궁 답이 될지 모르겠네요 일단 제가 하는 방법은 두가지 입니다. 첫째 스트럭쳐를 만들어서 보...
    • 김용덕
      2002.12.02 22:15
      안녕하세여. Record로 만들어서 보내는 것이 어떨런지요. string같은 경우에는 레코드 인자에 char Array...
    • 조형제
    • 2002.12.02 18:48
    • 2 COMMENTS
    • /
    • 0 LIKES
    • KDDG_Hoya
      2002.12.02 23:16
      서브쿼리 지원 됩니다. 제가 보기엔 테이블 엑세스 권한을 먼저 확인해 보시는게 좋을것 같군여.
    • 이중철
      2002.12.02 20:48
      지원하는것이 별로 없는걸로 아는데요.. 인라인뷰라고 하던가요.. 하여간 그건 오라클은 지원하고....
    • 한기돈
    • 2002.12.02 14:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 머슴
      2002.12.02 17:09
      where 앞에 공백이 없어서 에러가 나는 것 같은데요.... sql.add(' where bookname="홍길동"'); 이것...
    • 정성헌
    • 2002.12.02 01:20
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2002.12.02 04:23
      안녕하세요하얀까마귀 입니다. 오라클에서 자를수는 잇습니다만 자르지 마세요.. 자르게 되면 오히려...
    • 정성헌
      2002.12.02 04:43
      먼저.. 답변주신 하얀까마귀님께 감사드립니다. 해당 월이 변하는 값(?)이라 변수로 처리할려구 합니다....
    • KYH
      2002.12.02 05:19
      일단 하얀까마귀님의 방법이 옳은것 같습니다만, and  C.JIGB_DATE between '2002-12'+'-00...
    • 정성헌
      2002.12.02 05:26
    • dogmh
    • 2002.12.01 09:21
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_hyun
      2002.12.03 00:35
      따로 잡아 줘야 하는건 없는걸로 알고 있습니다 저도 짐 하나의 bde 가지고 7.0 이랑 2천 가치 사용 하...
    • 김상수
    • 2002.11.30 21:30
    • 3 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2002.11.30 21:31
      유니온을 3개 써서 안나왔다보기는 쫌그런데...^^ 다시한번 차분히 찾아보세요... 유니온을 쓰더라도...
    • 김상수
      2002.11.30 21:56
    • KDDG_ZZOM
      2002.11.30 22:53
      잘은 모르겠지만... 디비그리드는 쿼리결과를 그냥 보여주는 기능을 하는걸로 알고 있습니다... 혹시 쿼...
    • 도니
    • 2002.11.30 20:44
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김용덕
      2002.12.02 22:19
      안녕하세요. 아래 답변 쓰신것을 보니 아래 답변의 경우에는 Client에서 Data가 전송될 때마다 Connected...
    • 김수경
      2002.12.01 01:54
      아마도 socket 이 연결되지 않았는데(연결이 쬐금 시간이 걸리죠 ^^;) 자료를 보내셔서 그런 것 같습니...
    • 전원이
    • 2002.11.30 20:07
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2002.12.02 09:46
      예전에 써본게 있는데 잘작동되었던걸로 기억하네요.. 이름.. CPort 였던것 같은데.. 아마 토리같은곳에...
    • 초보짱..
    • 2002.11.30 12:49
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 깨구락지
      2002.11.30 20:12
      어디에선가 알아낸 것입니다. With theStringGrid Do Begin Perform( WM_SETREDRAW, 0, 0 ); try ...
    • 2002.11.30 05:40
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2002.11.30 23:13
      안녕하세요. 한원희입니다. 클릭 동작에는 별 차이가 없는 것으로 알고 있습니다. 아마도 내부 다른 코...
    • 2002.12.03 23:42
      .
    • KDDG_ZZOM
      2002.11.30 18:48
      잘은 모르는데... bitbt버튼은 이미지를 올리수 있고 button은 못올리는 것 같네요... ^^ 즐프하세요......
    • byun
    • 2002.11.30 04:10
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 우소
      2002.12.03 19:25
      확실하지는 않지만.. 아이템마다 힌트가 있는것이 아닌듯 싶은데요.. 트리뷰라면  마우스 무브...
    • 도니
    • 2002.11.30 04:01
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 깨구락지
      2002.11.30 16:54
      writeln 에는 CR+LF가 포함되고 write에는 포함되지 않습니다.
    • 진경민
    • 2002.11.30 03:06
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2002.11.30 21:36
      procedure PrintBmp(PCanvas:TCanvas;ARect: TRect; ABitmap: TBitmap ); var Info   &n...
    • 이광기
      2002.11.30 20:25
      dll32 => sqlora32.dll 로 설정하시고 연결하세염... ^^
    • 권대경
    • 2002.11.30 01:47
    • 2 COMMENTS
    • /
    • 0 LIKES
    • KDDG_Hoya
      2002.11.30 03:14
      방법은 있습니다. ^^*   ms-sql은   님의 만든 테이블 및 저장프로시져 정보...
    • 권대경
      2002.11.30 06:37
      선배님 정말 고맙습니다. 선배님 덕분에 발뻗고 잘 수 있을것 같네요~~ 이렇게 시원 할 수가 있나요..!...