2011-11-17 12 views
1

當我試圖改變我的存儲過程(下),我收​​到此錯誤信息:INSERT錯誤 - VARCHAR值(核)的隱式轉換

「VARCHAR值到VARCHAR的隱式轉換,不能因爲整理進行價值的是未解決由於排序規則衝突」

在此行中出現的錯誤:

INSERT INTO @TempList (OrderID) VALUES (@EmpID) 

我不明白是什麼問題歸類存在。

請想法這個..

感謝

USE [database] 
GO 

SET ANSI_NULLS ON 

GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER PROCEDURE [dbo].[database_0301_PRJ_dir_ger] 

@EmpList varchar(100) 

AS 

    DECLARE @TempList table (OrderID varchar(10)) 
    DECLARE @EmpID varchar(10) 
    DECLARE @Pos int 

    IF @EmpList <> '' 
    BEGIN 
    SET NOCOUNT ON 

    SET @EmpList = LTRIM(RTRIM(@EmpList))+ ',' 
    SET @Pos = CHARINDEX(',', @EmpList, 1) 

    IF REPLACE(@EmpList, ',', '') <> '' 
    BEGIN 
     WHILE @Pos > 0 
     BEGIN 
     SET @EmpID = LTRIM(RTRIM(LEFT(@EmpList, @Pos - 1))) 
     IF @EmpID <> '' 
     BEGIN 
      INSERT INTO @TempList (OrderID) VALUES (@EmpID) 
     END 
     SET @EmpList = RIGHT(@EmpList, LEN(@EmpList) - @Pos) 
     SET @Pos = CHARINDEX(',', @EmpList, 1) 
     END 
    END 

    SELECT dir.sigla + '-' + ger.nome AS dirger, 
    ger.codigo as gercodigo, 
    ger.nome as gernome, 
    dir.nome AS dirnome, 
    ger.diretoria as gerdiretoria 
    FROM d 
    bo.database_091500_GERENCIAS AS ger 
    INNER JOIN 
    dbo.database_090200_DIRETORIAS AS dir 
    ON 
    ger.diretoria = dir.codigo 
    WHERE 
    ger.diretoria IN (select * FROM @TempList) 
END 

回答

0

這聽起來像語言/國際化配置問題。

也許您的客戶端可能配置爲一個區域設置,而您的數據庫/數據庫服務器配置了不同的區域設置?

一個解決辦法可能是一個明確的轉換,例如:

http://www.sqlservercentral.com/Forums/Topic225939-8-1.aspx#bm225952

+0

保羅你好,感謝您的幫助,解決了!最好,丹尼爾 –