2013-10-16 4 views
1

아무도이 저장 프로 시저에 문제가 있다고 말할 수 있습니까? 난 그냥 새롭고 새로운 저장 프로 시저를 만들려고하는데, 나는 @ctable을 선언했다. 그러나 그것은 발견 될 수 없다. 나를 변수에저장 프로 시저 오류 만들기

CREATE PROCEDURE [dbo].[sptally] 
    @cfield varchar(80), 
    @ctable varchar(30) 
AS 
BEGIN 
SET NOCOUNT ON; 
    IF OBJECT_ID('dbo.tally') IS NOT NULL DROP TABLE dbo.tally 

    DECLARE @Counter INT = (Select MAX(CAST(@cfield as bigint)) from @ctable) 

    SET ROWCOUNT @Counter 

    SELECT IDENTITY(INT, 1, 1) ID 
    INTO dbo.tally 
    FROM master.sys.all_columns c 
    CROSS JOIN master.sys.all_columns c1 

    SET ROWCOUNT 0 

    -- ADD (unique) clustered index 
    CREATE UNIQUE CLUSTERED INDEX PKC_Tally ON dbo.tally (ID) 
END 
+0

오류 메시지가 무엇입니까? –

+0

DECLARE @Counter INT = (@Cable (@cfield as bigint)) (@ctable에서 @cfield를 선택하십시오.) 해당 항목을 인식 할 수 없습니다. ... –

답변

1
CREATE PROCEDURE [dbo].[sptally] 
    @cfield varchar(80), 
    @ctable varchar(30) 
AS 
BEGIN 
SET NOCOUNT ON 
    IF OBJECT_ID('dbo.tally') IS NOT NULL DROP TABLE dbo.tally 

    DECLARE @Counter INT 

    DECLARE @SQL nvarchar(max) = N'SELECT @Counter = MAX(CAST(' + @cfield + ' as bigint)) from ' + @ctable 

    EXEC sp_executesql 
     @SQL 
    , N'@Counter int OUTPUT' 
    , @Counter = @Counter OUTPUT 

    SET ROWCOUNT @Counter 

    SELECT IDENTITY(INT, 1, 1) ID 
    INTO dbo.tally 
    FROM master.sys.all_columns c 
    CROSS JOIN master.sys.all_columns c1 

    SET ROWCOUNT 0 

    -- ADD (unique) clustered index 
    CREATE UNIQUE CLUSTERED INDEX PKC_Tally ON dbo.tally (ID) 
END 
2

테이블 이름은 다음과 같이 작동하지 않습니다 도와주세요 .. 당신이 EXEC를 사용하여 사용할 수 있습니다.

이 시도 :

DECLARE @Counter INT; 

declare @strSql nvarchar(2000) 
set @strSql ='Select MAX(CAST('+ @cfield +' as bigint)) from' + @ctable 

exec sp_executesql @strSql,N'@Counter int output', @Counter output 
SELECT @Counter 

http://technet.microsoft.com/en-us/library/ms188332.aspx

+0

을 선언해야합니다.이 방법을 실행할 수있는 다른 옵션이 있습니까? 저장 프로 시저 사용? –

+0

이 또 다른 저장 프로 시저입니까? ... –

+0

Rolen .. 작동하지 않았습니다. 내게 '+'근처에 잘못된 구문이 나타납니다. –