database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 3624 게시물 읽기
No. 3624
프로시저 질문입니다.
작성자
이형진(photojini)
작성일
2007-07-10 11:07
조회수
3,856

ORACLE도 인제 겨우 익숙해졌는데 MS-SQL로 해야하는 일이 생겨버려서 너무 힘드네요.. ㅡ,.ㅡ


일단 프로시저 질문입니다...  


테이블을 CREATION해야 하는데 이걸 프로시저로 만들거라서,,


기존에 생성된 DB외에 새로 ODS라는 DB를 만들었습니다.


일단


CREATE PROCEDURE ODS.프로시저명

AS


CREATE TABLE  ODS.A테이블 ( ..... )


CREATE TABLE  ODS.B테이블 ( ..... )


CREATE TABLE  ODS.C테이블 ( ..... )


CREATE TABLE  ODS.D테이블 ( ..... )


이런식으로 대충 짰는데 실행시켰더니 다음같은 에러가 뜨더라고요..


SQL Server Database Error: Specified owner name 'ODS' either does not exist or you do not have permission to use it.



DB생성 부터가 잘못된건지,,, 아님 프로시저 자체에 문제가 있는건지 모르겠네요... 


테이블 여러개 만들려면 프로시저 안에 저런식으로 배열하면 되는건지 알려주세요~~


그리고 두번째 프로시저가 있습니다.


이건 새로 만든 DB와 다른 DB테이블을 비교하여 새로운 데이타를 다른 테이블에 인서트 하는 프로시저입니다.


이것도 인서트 문을 나열한건데 일단 에러는 위와 동일합니다.



CREATE PROCEDURE ODS.프로시저명2

AS



INSERT INTO ODS.NEW테이블A

SELECT *

FROM 기존DB.테이블A

WHERE NOT EXISTS ( SELECT 'X' FROM ODS.테이블A WHERE 기존DB.테이블A.KEY = ODS.테이블A.KEY)


INSERT INTO ODS.NEW테이블B

SELECT *

FROM 기존DB.테이블B

WHERE NOT EXISTS ( SELECT 'X' FROM ODS.테이블B WHERE 기존DB.테이블B.KEY = ODS.테이블B.KEY)


INSERT INTO ODS.NEW테이블C

SELECT *

FROM 기존DB.테이블C

WHERE NOT EXISTS ( SELECT 'X' FROM ODS.테이블C WHERE 기존DB.테이블C.KEY = ODS.테이블C.KEY)



이런 형태입니다.


제가 보기엔 DB생성도 문제이지만 프로시저 자체도 뭔가 에러가 있는 듯 합니다.


여러분들의 도움이 절실히 필요합니다~~~~~~!!!!! 도와주세요~~~~~!!!!!!

이 글에 대한 댓글이 총 4건 있습니다.

일단 오류를 하나 씩 잡으세요...;


ODS가 database 이름이라면 테이블 바로 앞에 쓰는 게 오류입니다.


CREATE PROCEDURE 프로시저명 ...

또는

CREATE PROCEDURE [dbo].프로시저명 ...


CREATE TABLE  ODS.[dbo].A테이블 ( ..... )

또는 

CREATE TABLE  ODS..A테이블 ( ..... )


내용 확인하세요...;


건승하시길...수고하세요~~

성시현(finecomp)님이 2007-07-10 11:38에 작성한 댓글입니다.

오류를 하나씩이라고 하셔서..

다른 오류도 좀 알려주세요~~~~~

이형진(photojini)님이 2007-07-10 17:06에 작성한 댓글입니다.

하나씩...;;;

위 사항은 INSERT문에도 해당하는 사항일겁니다. 그것도 맞게 고치세요.
답변을 기준으로 잠깐만 테스트 해 보시면 될 텐데요...;

고쳐서 돌리니 오류가 나던가요?
그럼 그 오류 메시지를 올려주셔야 알죠...;

질문엔 오류가 한가지 뿐이라서요...;

성시현(finecomp)님이 2007-07-10 18:04에 작성한 댓글입니다.
이 댓글은 2007-07-10 18:07에 마지막으로 수정되었습니다.

SQL Server Database Error: Specified owner name 'ODS' either does not exist or you do not have permission to use it.


위 에러는 ODS라는 사용자가 없다는 것입니다.

mssql에서는 object(인덱스나 테이블, 프로시져..등등)를 생성할때 사용자를 지정합니다.

'ODS.프로시져명'으로 만드실 때, ODS는 사용자가 되어야합니다.


ODS라는 디비를 만드셨다고 하셨는데, 이 경우에 다른 디비에 프로시져를 만들 경우

생성 권한이 있어야하고, 또한 table object 생성시에도 'ods.A테이블'이 아닌

'ods.사용자.A테이블' 과 같은 형식으로 만드셔야 합니다.

이희길(firezenh)님이 2007-07-12 10:33에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
3627시스템을 구축하려는데 어떻게 하면 될까요
조광수
2007-07-11
1883
3626정렬 문제입니다. [1]
sort
2007-07-11
2320
3625트리거에 대해서 급 질문합니다 도와주세요... [3]
김수동
2007-07-10
3000
3624프로시저 질문입니다. [4]
이형진
2007-07-10
3856
3621ODBC를 이용해서 대량쿼리를 DB서버로 날리는 좋은 방법 좀 알려 주세요.
김승일
2007-07-09
2265
3620MDB에서 Insert 하려는데 오류가 납니다(ASP)
신영환
2007-07-08
6520
3619sql ce 에서 테이블 생성시 [1]
신승범
2007-07-07
2703
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.026초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다