0

好的,当我尝试执行此过程时出现此错误。问题是我并不想在任何时候转换成一点点。至少不是故意的。我现在有点难过。

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
)
4

4 回答 4

2

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

于 2012-04-06T20:51:39.303 回答
0

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

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

于 2012-04-09T12:35:01.407 回答
0

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

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

于 2012-04-06T21:23:53.300 回答
-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 
) 
于 2012-04-06T20:50:38.677 回答