SQL varchar到位错误



好吧,当我试图执行这个过程时,我会遇到这个错误。问题是,我在任何时候都不想转换成一点。至少不是故意的。我现在有点不知所措。

Declare @AValue varchar(max)
set @AValue = (SELECT Value 
        FROM dbo.Tbl 
        WHERE Name=@FILE 
            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
)

检查表上的触发器,尤其是插入。很多时候,无法解释的错误可能潜伏在那里。

发布错误、CREATE PROCEDURE语句,最重要的是,发布对失败过程的调用。此外,您使用的SQL Server版本是什么?

最有可能的是,存储的proc有一个BIT类型的参数,并且您正在用一个值(如"F"、"-1")或其他无法转换为BIT的字符串来调用该过程。

对不起,找到答案了。我今天回来了,我得到的错误与我第一次问这个问题时的错误完全不同。对不起,我忘了写那个错误。

问题是我的WHERE子句从数据库中获得了多个返回,因为我已经测试了很多,所以有重复的行。

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 
) 

最新更新