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