2012-01-31 2 views
0

.net에서 저장 프로 시저에 ID 값을 삽입하려고하는데 ID의 int 값이 저장 프로 시저에 음수 값을 삽입하고 있습니다.저장 프로 시저에 음수 값 전달

그러나 음수 값이 전달되면 '*'근처에서 잘못된 구문 오류가 발생합니다.

도와주세요. 나는 오류가 발생하고 다음과 같이 내가 코드를 실행하고 때

은 여기 내 저장 프로 시저

ALTER PROCEDURE [dbo].[HotlinePlusAdministration_ArticleMigrator] 
     @Id AS INT, 
     [email protected] AS INT, 
     [email protected] AS Varchar(200), 
     [email protected] AS datetime, 
     @DestLinkServer AS VARCHAR(50), 
     @UserID  AS VARCHAR(8), 
     @ReturnMsg AS VARCHAR(1000) OUTPUT 
AS 

BEGIN 

DECLARE @Query AS NVARCHAR(4000) 
DECLARE @Log AS VARCHAR(8000) 
DECLARE @ArticleID as int 
DECLARE @NewArticleID as int 
DECLARE @ArticleKeyExists as int 
DECLARE @Title as varchar(200) 
DECLARE @CategoryID as INT 
DECLARE @ArticleDate as varchar(30) 
DECLARE @ParmDefinition nvarchar(500); 

SET XACT_ABORT ON -- Required for nested transaction 
BEGIN TRAN 


-- Check if ArticleID exists in Destination Server 

    SET @Query = N' SELECT @ArticleKeyExists = COUNT(*) 
         FROM ' + @DestLinkServer + '.HL2_61.dbo.Article' + ' where ArticleKey = ' + str(@Id) 

     SET @ParmDefinition = N' @ID int, @ArticleKeyExists int OUTPUT'; 

     EXECUTE sp_executesql @Query , @ParmDefinition, @ID, @ArticleKeyExists OUTPUT; 
--EXECUTE sp_executesql 1234,'BRHLSQL8','BRWSQLDC',@return = retnmsg 

        IF @@ERROR <> 0 
         BEGIN 
           ROLLBACK TRANSACTION 
          SET @ReturnMsg = @Log + '<span style="color:red;">ERROR: <br></span>' 
           RETURN -1 
         END 


--Delete existing Articles for select page 
set @Query = 'DELETE FROM ' + @DestLinkServer + 
      '.HL2_61.dbo.Article ' + 
      'WHERE ArticleKey = ' + CONVERT(VARCHAR, @Id) 
      --'WHERE CategoryID = ' + CONVERT(VARCHAR, @CategoryID) + ' and Title = ''' + @Title + ''' and ArticleDate = ''' + @ArticleDate + '''' 
Print @Query 
EXEC(@Query) 

입니다.

CONVERT(VARCHAR(50), @Id) 
이 시도

: 당신이 intvarchar A를 변환

DECLARE @return_value int, 
     @ReturnMsg varchar(1000) 

EXEC @return_value = [dbo].[Migrator] 
     @Id = -1591276581, 
     @DestLinkServer = N'SQLDC', 
     @UserID = N'10c1', 
     @ReturnMsg = @ReturnMsg OUTPUT 

SELECT @ReturnMsg as N'@ReturnMsg' 

SELECT 'Return Value' = @return_value 

GO 

누군가가 제발 도와주세요 ..

감사

+0

긴 코드입니다. 3 줄로 줄여보십시오. 나는 그런 식으로 오류를 직접 발견 할 것입니다. – usr

+0

나는 Sprocedure를 조각으로 실행하는 것에 지쳤으며, 나는 그 오류를 얻고 있음을 발견했다. 하지만 문제는 내가 오류없이 음수 값을 전달하기 위해 무엇을해야하는지 전혀 모른다는 것입니다. – user1005479

답변

1

, 당신은 크기를 지정해야

및 사용하지 마십시오 str(@Id)

관련 문제