2012-04-06 46 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