2012-10-20 2 views
0

테이블이 아닌 테이블에 데이터를 삽입 할 수있는 SQL Server 2008의 저장 프로 시저를 만들려고합니다. 아래에 표시된 것을 만들었지 만 프로 시저를 실행하는 동안 예외가 발생합니다. 즉,삽입 용 SQL Server 단일 저장 프로 시저

잘못된 개체 이름 'dbo. @ table'입니다.

저장 프로 시저 코드 :

CREATE PROCEDURE dbo.sp_InsertValues 
    @table varchar(15) 
    , @fields varchar(100) 
    , @values varchar(100) 
AS 
BEGIN 
    INSERT INTO [dbo].[@table] (@fields) VALUES (@values) 
END 
GO 

내가 열을 매개 변수 테이블을 확인하고 매개 변수가 null없는 값을 기억하십시오.

+3

이렇게하려면, 당신은 당신이 전달하는 매개 변수에서 동적 SQL을 생성해야 할 것 –

+0

을 아담의 코멘트를 구체화하려면 다음을 참조 http://msdn.microsoft ([실행] .com/ko-us/library/ms188332 (v = sql.100) .aspx). – HABO

+0

이 기술은 좋지 않은 이유로 매개 변수화 된 SQL을 사용하지 않기 때문에 좋지 않습니다. 이런 식으로하지 마십시오. 데이터를 삽입하는 방법을 결정하기 전에 매개 변수화 된 SQL이 중요한 이유를 연구합니다. – usr

답변

2

동적 SQL을 사용하여 명령을 작성한 후 실행해야합니다. 이 시도 :.

CREATE PROCEDURE dbo.sp_InsertValues 
   @table nvarchar(15) 
   , @fields nvarchar(100) 
   , @values nvarchar(100)   
AS 
BEGIN 
    DECLARE @SQL NVARCHAR(MAX) 
    SET @SQL = 'INSERT INTO [dbo].' + QUOTENAME(@table) + '(' + @fields +') VALUES (' + @values + ')' 
    EXEC(@SQL) 
END 
GO