2012-04-06 48 views
0

好吧,當我嘗試執行此過程時出現此錯誤。事情是,我不想在任何時候轉換一下。至少不是故意的。我現在有點難過。SQL varchar到位錯誤

Declare @AValue varchar(max) 
set @AValue = (SELECT Value 
     FROM dbo.Tbl 
     WHERE [email protected] 
      AND Value LIKE (CAST(@MODID as varchar(15))+'|%')) 
set @AValue = PARSENAME(REPLACE(@AValue, '|', '.'), 1) -- Hack way to parse. 

INSERT INTO dbo.Tbl 
(
    Name, 
    Value, 
    Type, 
    CDT, 
    UDT, 
    Active, 
    User 
) 
VALUES 
(
    'Agreement', 
    (CAST(@MODID AS varchar(15)) + '|' + @AValue), 
    'Download', 
    GETDATE(), 
    GETDATE(), 
    1, 
    @USER 
) 
+2

**什麼是**數據庫系統,以及哪個版本? ** SQL **只是結構化查詢語言(Structured Query Language) - 許多數據庫系統使用的語言 - SQL是** NOT **數據庫產品......類似這樣的東西通常是供應商特定的 - 所以我們真的需要知道什麼你正在使用的數據庫系統.... – 2012-04-06 20:43:26

+1

實際的錯誤信息也是非常有價值的。 – JNK 2012-04-06 20:44:51

+0

@marc_s歸因於'CAST'和'GETDATE'我猜測SS – JNK 2012-04-06 20:45:22

回答

0

對不起,找到了答案。我今天回來了,我得到的錯誤與我第一次提問時的錯誤完全不同。對不起,我忘了寫這個錯誤。

問題是我的WHERE子句從數據庫中獲得多個返回因爲我一直在測試很多,所以有重複的行。

-3

GetDate需要分配給T-SQL中的某些東西,然後才能用於插入。

試試這個:

DECLARE @CDT DateTime 
DECLARE @UDT DateTime 
SELECT @CDT = GetDate() 
SELECT @UDT = GetDate() 

INSERT INTO dbo.Tbl 
( 
    [Name], 
    [Value], 
    [Type], 
    CDT, 
    UDT, 
    Active, 
    User 
) 
VALUES 
( 
    'Agreement', 
    (CAST(@MODID AS varchar(15)) + '|' + @AValue), 
    'Download', 
    @CDT, 
    @UDT, 
    1, 
    @USER 
) 
+2

-1:完全不是這樣...... – 2012-04-06 20:52:20

2

檢查表上的觸發器,特別是插入。很多次無法解釋的錯誤可能潛伏在那裏。

0

發佈錯誤,CREATE PROCEDURE語句和 - 最重要的是 - 調用失敗的過程。另外,你使用的是什麼版本的SQL Server?

最有可能的是,存儲的proc有一個類型爲BIT的參數,並且您正在使用類似於'F','-1'或其他某些不能轉換爲BIT的字符串的值調用過程。

+0

這不是更合適嗎? – 2012-04-06 21:30:13

+0

我不這麼認爲。 「存儲的proc有一個類型爲BIT的參數,並且您正在調用該過程的值爲'F','-1'或其他一些不能轉換爲BIT的字符串。」適合作爲答案而不是評論。當然,這可能是錯誤的,但它不是一個評論。 – 2012-04-06 21:56:19