2017-03-21 45 views
1

その他:これは、sqlの他の無数の文字列間の問題と重複していません。これは、別の問題を隠す特定の謎めいたエラーメッセージです(アスタリスク付き)varchar値 '*'をデータ型intに変換するときにSQL変換に失敗しました

今日私は解決するために一日中私のSQLに問題が出てきました。私はストアドプロシージャにデータテーブルパラメータを渡して、別のテーブルにその一部を挿入していました。使用されるコードは次のようなものでした:

INSERT INTO tblUsers 
    (UserId,ProjectId) 
VALUES ((SELECT CAST(CL.UserId AS int) FROM @UserList AS UL),@ProjectId) 

私はDEVシステムからの呼び出しを行うときにのみ、テストデータを使用したときにエラーメッセージを取得していないようでした。

問題とはどのようなものですか。コードはどのように見えるのですか?

答えて

2

(SELECT CAST(CL.UserId AS int) FROM @UserList AS UL)は1行以上を返し、テストシナリオは1行しかないと確信しています。しかし、それは私だけかもしれません。

とにかく、コードが見えるべき方法は次のとおりです。

INSERT INTO tblUsers (UserId,ProjectId) 
SELECT CAST(CL.UserId AS int), 
    @ProjectId 
FROM @UserList AS UL 
1

Googleとそのような場所を通じてトロールのいくつかの時間後、私はこのSQLコードが間違っていると判断しました。私は、正しいコードがより多くのこのようなものであると信じて:

INSERT INTO tblUsers 
    (UserId,ProjectId) 
SELECT CAST(CL.UserId AS int) ,@ProjectId 
    FROM @UserList AS UL 

問題は、それを行うための他の方法は、テーブルパラメータのすべての行のデータを一つのレコードを挿入しようとしていることです。私はVALUESステートメントを削除する必要がありました。また、他のデータを追加するためには、そうでない場合と同じようにselectの一部として単純に入れることができます

関連する問題