Q & A

시삽: 레드플러스 님 
게시판 이동:
 제목 : 하나의 프로시져로 가변적인 테이블에 데이터를 입력하게 할려고 합니다.
글번호: 640
작성자: 나즈막히
작성일: 2007/07/19 오후 3:40:00
조회수: 4869
하나의 프로시져로 가변적인 테이블에 데이터를 입력하게 할려고 합니다.

CREATE PROCEDURE dbo.~~~~~~~~
@테이블변수       varchar(8)
                   ~
                   ~
등등 여러 변수들

AS

BEGIN TRAN
      INSERT [@테이블변수]
                      (필드명들,,,,)
     VALUES
                    (@ 등등 여러 변수들~)

IF @@ERROR = 0
        COMMIT TRAN
ELSE
        ROLLBACK TRAN
return @@ERROR
GO

이런식으로 해줬구요,,
DB 테이블변수는 DropDownList 에서 받아오게 해놨는데,,
실행시키면

개체이름 ''''@테이블변수''''이(가) 잘못되었습니다. EXECUTE 후 트랜잭션 개수가 COMMIT 또는 ROLLBACK TRANSACTION 문이 없음을 나타냅니다. 이전 개수 = 0, 현재 개수 = 1.

이라는 오류메시지가 뜹니다..

SQL에 대해서 잘 아시는분 제발 도와주세요.ㅠㅠ
 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트
  violeter33
  2007-07-19 오후 3:54:21
이건 정적 쿼리군요..

동적 쿼리로변환 해서 사용해보세요..

만약 MS-SQL 이 2000 이라면..

이구문은 동작하지 않을것 같네요..

동적쿼리라면 가능할거 같습니다..
  choiyw2
  2007-07-19 오후 4:53:18
CREATE TABLE TEST_TABLE
(
    NUM INT,
    NUM2 INT
)

CREATE PROC AA
    @TABLE VARCHAR(50)
AS
    DECLARE @AA VARCHAR(3000)

    SET @AA = '
    INSERT INTO ' + @TABLE + '
    (NUM,NUM2) VALUES (1,2)
    '
    EXEC (@AA)
GO

AA 'TEST_TABLE'

초 간단예제 ㅡㅡㅋ
  violeter33
  2007-07-19 오후 5:29:42
예제 성의 없어~

영유 성의 없어~

영유는 있는게 없어~
  nasmaki
  2007-07-19 오후 5:34:12
답변 감사합니다.. MS SQL 2000 쓰고 있습니다..
choiyw2 님이 말씀하신대로
DECLARE @SQL    varchar(1000)
SET @SQL = 'INSERT'+"@테이블변수명"+''
       +'(필드명, 필드명, 필드명)'
       +'VALUES'
       +'('+@변수명+','+@변수명+','+@변수명+')'
BEGIN TRAN
         EXEC(@SQL)
IF @@ERROR = 0
         COMMIT TRAN
ELSE
         ROLLBACK TRAN

return @@ERROR
GO
이렇게 바꿨는데도.ㅠㅠ.. 안되네요..ㅠㅠ 왜그럴까요.ㅠㅠ
  violeter33
  2007-07-19 오후 7:00:26
동적 쿼리를 사용할때..

'',"".. 이것을 주의 하셔야 해요..

테이블명 변수에 " " 가있는데요..

빼고 한번 해보세요..


  nasmaki
  2007-07-19 오후 7:48:23
violeter33님,, 답변감사합니다...
근데.. 빼두 안돼요.ㅠㅠ.. 벌써 하루종일 거짓말 하나두 안붙이구
백여번은 더 이리저리 시도해 본거 같아요..ㅠㅠ..
바본가..ㅠ_ㅠ.. 왜케 안되지.ㅠㅠ..
  choiyw2
  2007-07-20 오전 8:23:19
EXEC (@SQL)을 PRINT (@SQL) 로 바꿔서 전체 구문을 출력해보세요``

띄워쓰기 조심하시구요

문자열이면  ' 로 한번 더 감싸주는 센스!

구문 올려주시면 바꿔드릴께요`~`

  nasmaki
  2007-07-20 오전 8:47:34
CREATE PROCEDURE 샬라샬라
~~~~
~~~~
AS

DECLARE @SQL VARCHAR(1000)

SET @SQL = 'INSERT'''+@FA+
                   '''(필드1, 필드2, 필드3, 필드4, 필드5, 필드6, 필드7, 필드8,
                       필드9, 필드10, 필드11, 필드12, 필드13)''''
                       VALUES''''
                       ('+변수1+','+변수2+','+변수3+','+변수4+','+변수5+',
                        '+변수6+','+변수7+','+변수8+','+변수9+','+변수10+',
                        '+변수11+','+변수12+','+변수13+')'
BEGIN TRAN
          EXEC(@SQL)
IF @@ERROR = 0
          COMMIT TRAN
ELSE
          ROLLBACK TRAN

return @@ERROR
GO
  nasmaki
  2007-07-20 오전 8:49:50
구문은 위와 같구요,,
변수값에 "가나다-가" 이런식으로 하이픈이 들어가는데요,,
크게 상관은 없나 해서요..
고쳐 주시면 감사하겠습니다.ㅠ
  violeter33
  2007-07-20 오전 9:20:40
박용준 선생님 자료 찾아보면 다 있는데요..

이렇게 예제 만들어 봤습니다..

Create Table test1
(
    Id Int ,
    Name VarChar(100)
)
go

Create Table test2
(
    Id Int ,
    Name VarChar(100)
)
go

Create Proc UP_Test_Add
    @Table_Name VarChar(50),
    @Id Int,
    @Name VarChar(100)
as
    --[1]
    Declare @strSql VarChar(500)
    
    --[2]
    Set @strSql = '    Insert ' + @Table_Name + ' (Id, Name) Values (' + cast(@Id as VarChar(10)) + ', ''' + @Name + ''')'
    
    --[3]
    exec(@strSql)
Go

UP_Test_Add 'test1', 1, '레드플러스 만세~'
go
UP_Test_Add 'test2', 1, '레드플러스 만세~'
go
Select * From test1
go
select * From Test2
go
  violeter33
  2007-07-20 오전 9:22:01
동적 쿼리 작성할때..

프로시져 내에서 쿼리문을 담을 변수에서는요..

int 형은 varchar 로 변환 해야 하구요..

문자열은 '' 두번으로 묶어야 합니다..

수고하세요~
  choiyw2
  2007-07-20 오전 9:49:06
무성의해!
  violeter33
  2007-07-20 오전 10:50:28
시꾸라..

니 예제 하고 비교를 해봐~

성의도 없고..

예의도 없고..

구타나 유발..

하여간 영유..
안되안 돼안..
  choiyw2
  2007-07-20 오후 12:25:54
즐!즐!즐!즐!즐!
  nasmaki
  2007-07-20 오후 2:05:53
ㅋ, ^^ 도움주신분들 정말 감사합니다~ ^ㅡ^;;
어찌어찌 해결을 하긴 했는데,, 궁금한게 생겨서,, 새글로 또 질문
할 생각인데.. 혹시 도와주실꺼죠? ㅋ ^ㅡ^  /

언제나 즐겁고 행복한 하루하루 만드시길 바라며..^^

(댓글을 남기려면 로그인이 필요합니다.)

관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 테이블명을 변수로 지정하다가 생긴 의문점.. (2) - 나즈막히 2007-07-20 4300
현재글 하나의 프로시져로 가변적인 테이블에 데이터를 입력하게 할려고 합니다.(15) - 나즈막히 2007-07-19 4869
  노파심에 여쭤봅니다. (1) - hatukoi 2007-07-20 3880
다음글 asp.net 2.0에서 딱 막혔습니다. ㅠ(5) - 이주성 2007-07-19 3851
 
손님 사용자 Anonymous (손님)
로그인 Home