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

エラー、CREATE PROCEDUREステートメント、そして最も重要なこととして、失敗しているプロシージャの呼び出しをポストします。また、どのバージョンのSQL Serverを使用していますか?

ほとんどの場合、ストアドプロシージャにはBIT型のパラメータがあり、「F」、「-1」などの値、またはBITに変換できないその他の文字列を使用してプロシージャを呼び出しています。

于 2012-04-06T21:23:53.300 に答える
0

申し訳ありませんが、答えを見つけました。私は今日戻ってきました、そして私が得たエラーは私が最初に質問したときのものとは完全に異なっていました。申し訳ありませんが、そのエラーを書くのを忘れました。

問題は、WHERE句がデータベースから複数の戻り値を取得していたことでした。これは、多くのテストを行っていたため、行が重複していたためです。

于 2012-04-09T12:35:01.407 に答える
-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 に答える