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 431 게시물 읽기
No. 431
쿼리문좀 봐주세요..
작성자
nuclear
작성일
2002-06-25 16:30
조회수
7,167

제가 하고싶은 일은...

test1, test2, test4, test5..

이렇게 여러개의 테이블이 있습니다.

이런 여러 테이블을 한번에 처리하려고 합니다.

각 테이블의 구조는 같습니다.

idx int

date datetime

 

쿼리문...

begin

declare @i int

declare @tablename char(4)

set @i = 0

set @tablename = 'test' + @i

while @i < 10

begin

insert into @tablename value (getdate())

@i = @i + 1

end

end

이렇게 하면...

set @tablename = 'test' + @i

이부분 에러...

insert into @tablename value (getdate())

이부부 에러..

@i = @i + 1

이부분 에러...

에러가 많이 납니다...

ㅜㅜ;

이 쿼리문좀 고쳐주세요~~

전혀 안되는 건가요?

조언 부탁드립니다...

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

이렇게 해보세요

그럼 뭐가 문제인지 아실수 있습니다!

 

먼저 실행하기전에 exec(@a)를 주석처리하신후에 해보세요!

 

@tablename변수를 형을 char로 잡으심 안돼구요

varchar로 길이도 여유있게...

그리고 value가 아니고 values이구요!

필드 idx가 자동 증가 필드가 아니라면

 

insert 테이블명 (필드명....) values (값들)이라고

반드시 필드명을 명시해야합니다!

안그러면 values뒤에 모든 테이블의 필드값을 명시해주셔야합니다.

 

begin

declare @i smallint

declare @tabelname varchar(6)

declare @a varchar(100)

set @i = 1

while @i < 10

begin

set @tablename = 'test' + convert(varchar(2), @i )

set @a = 'insert into '

set @a = @a + @tablename

set @a = @a + ' values ('

set @a = @a + convert(varchar(2), @i)

set @a = @a + ', getdate())'

print @a

exec(@a)

set @i = @i + 1

end

end

 

 

다 이해하셨으면 @a변수를 없애버리시고 바로

exec()를 사용하셔도 됍니다!

 

@tablename변수를 길게 잡은다음

convert를 사용하지 않고 다음과 같이 하시면

이런 결과가 나옵니다!

 

begin

declare @i smallint

declare @tblname varchar(50)

declare @a varchar(100)

set @i = 1

while @i < 10

begin

set @tblname = 'test' + str(@i)

set @a = 'insert into '

set @a = @a + @tblname

set @a = @a + ' values ('

set @a = @a + str(@i)

set @a = @a + ', getdate())'

print @a

set @i = @i + 1

end

end

 

이것에 대한 쿼리문들은 이러게 나옵니다

 

insert into test 1 values ( 1, getdate())

insert into test 2 values ( 2, getdate())

insert into test 3 values ( 3, getdate())

insert into test 4 values ( 4, getdate())

insert into test 5 values ( 5, getdate())

insert into test 6 values ( 6, getdate())

insert into test 7 values ( 7, getdate())

insert into test 8 values ( 8, getdate())

insert into test 9 values ( 9, getdate())

 

test다음 공백이 들어가서 1

test다음 공백이 들어가서 2

test다음 공백이 들어가서 3등과 같이 나타나죠!

values다음의 @i값도 공백이 들어갑니다!

 

도움이 돼셨기를 바라네요~~~

커틀러님이 2002-07-11 09:19에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
435[질문]서버의 현재 요일을 구하는 방법 ?
오정민
2002-07-02
6594
496┕>Re: [질문]서버의 현재 요일을 구하는 방법 ?
최민호
2002-08-24 13:42:18
7104
433[질문]도와주세요.
오정민
2002-06-27
4012
434┕>Re: 문제 해결했습니다. 냉무
오정민
2002-06-28 14:45:18
5741
432backup후 새 디비에 restore하려는데요... ㅜ ㅡ
윤창현
2002-06-26
6247
431쿼리문좀 봐주세요.. [1]
nuclear
2002-06-25
7167
430alter table을 이용하여 테이블 변경시 identity의 추가는 ..?
김종일
2002-06-24
7556
429mysql에서는 되는데 mssql에서는 어떻게?? [2]
강상인
2002-06-24
6335
427MS-SQL 대한 특징이 머죠??
이민경
2002-06-22
6257
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다