2014-07-19 1 views
-2

아래 쿼리에서 쉼표로 구분 된 값을 삭제하려고하면 "varchar 값을 변환 할 때 변환에 실패했습니다. '1,3 'to data type int. "이 문제를 극복하는 데 도움이됩니다.SQL Server에서 varchar 값 '1,3'을 데이터 형식 int로 변환 할 때 변환이 실패했습니다

ALTER PROCEDURE [dbo].[spDeleteCustomerGroupLocationMap] 
    -- Add the parameters for the stored procedure here 
    @i_LocationID int, 
    @i_CustomerGroupID varchar 

    --WITH ENCRYPTION 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    -- Insert statements for procedure here 
    IF EXISTS (SELECT 1 FROM CustomerGroupLocationMap WHERE LocationID = @i_LocationID AND CustomerGroupID = @i_CustomerGroupID) 
    BEGIN 

     DELETE CustomerGroupLocationMap WHERE LocationID = @i_LocationID AND CustomerGroupID = (SELECT * FROM dbo.CSVToTable(@i_CustomerGroupID)); 

    END 
END 
+0

에서 실제 열 이름으로 대체

DELETE CustomerGroupLocationMap WHERE LocationID = @i_LocationID AND CustomerGroupID IN ( SELECT [column name] FROM dbo.CSVToTable(@i_CustomerGroupID) ); 

에 "[열 이름]"을 변경하지만 '1,3'를 int 아니므로보고 - 당신을 위해 왜 어떤 가치를 찾고 계십니까? –

+1

@i_CustomerGroupID의 크기가 지정되지 않아 기본값 1자를 사용합니다. 당신은 아마도 그것이 다른 어떤 것이되기를 원할 것입니다. –

+0

CSVToTable의 결과는 어떻게됩니까? – Squirrel

답변

0

아마도 여기에서 오류가 발생했을 수 있습니다. 시도 CSVToTable

+0

안녕하세요 우르 코드 작동합니다.하지만 하나의 값을 삭제하면 모든 값이 삭제됩니다. – user3806185

+0

SELECT [열 이름]에 대한 값 게시 FROM dbo.CSVToTable (@i_CustomerGroupID) – Recursive

+0

@Anand 하나의 값을 삭제하려고하면 모든 값이 삭제됩니다. – user3806185

관련 문제