2013-10-02 3 views
6

나는 db A와 db B를 가지고있다. 저장 프로 시저의 시작에서 B.mytable부터 B.mytablebackup까지 모든 행을 백업하고 싶다. 나머지 저장 프로시 저는 db A (데이터를 수집하여 B.mytable에 기록)의 테이블에 대해 실행됩니다.다른 SQL 데이터베이스에서 테이블의 존재를 확인하는 방법?

그래서 B.mytablebackup

IF EXISTS(SELECT 1 FROM B.dbo.mytablebackup) 

를 존재하는지 확인하고이하는 경우 그것이

SELECT * INTO B..mytablebackup from B..mytable 
않는 존재하지 않는 경우, 저장 프로 시저는

INSERT INTO B..mytablebackup SELECT * FROM B..mytable 

을한다

하지만 저장 프로 시저를 실행할 때 오류가 발생했습니다

이미 나는 Print 문을 추가 실행이는 IF의 분기를 "존재하지 않는"복용하는 데이터베이스

에 'mytablebackup'라는 개체가 있습니다.

내가 뭘 잘못하고 있니?

+1

*** SQL ***는 * 많은 데이터베이스 시스템에서 사용하는 언어이지만 구조적 쿼리 언어 *는 아닙니다. 많은 것들이 공급 업체별입니다. 그래서 우리는 정말로 필요합니다. 어떤 ** 데이터베이스 시스템 ** (그리고 어떤 버전)을 사용하고 있는지 알고 계십시오. (그에 따라 태그를 업데이트하십시오.) .... –

+1

@marc_s db.schema.tbl 형식을 기반으로하는 MSSQL이라고 생각합니다. – Kermit

+2

'IF EXISTS (SELECT 1 FROM B.dbo.mytablebackup)''mytablebackup '내에 적어도 하나 이상의 행이 있는지를 검사한다. 테이블 자체가 존재하는지 여부를 알려주지 않습니다 * (테이블이 존재하지 않으면 컴파일 오류가 발생합니다.) –

답변

10

SQL Server의 경우 시스템보기 sys.tables를 사용하여 테이블이 존재하는지 확인해야합니다.

IF EXISTS(SELECT 1 FROM B.sys.tables WHERE name = 'mytablebackup') 
+0

고마워, 에릭. 그것은 트릭을했다. – DeveloperM

관련 문제