C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: UpdateCommandで複数のテーブル更新


(過去ログ 19 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■8168 / inTopicNo.1)  UpdateCommandで複数のテーブル更新
  
□投稿者/ ちょっと休憩 (1回)-(2007/09/25(Tue) 16:06:58)

分類:[ASP.NET (VB)] 

お世話になっております
お聞きしたいのはUpdateCommandの中身なのですが

元々はこうなっていて、正しく動作していたのです。
UPDATE [user] SET [company] = @company, [name] = @name, [age] = @age WHERE [UserId] = @original_UserId"                

しかしもう1つ別のテーブルデータも更新したくなりました。
UPDATE [mailinfo] SET [Email] = @Email WHERE [UserId] = @original_UserId

別々であれば正しく動きます。
そこでストアドプロシージャを以下のようにして、

-------------------
CREATE PROCEDURE SP_userupdate

	@UpUserID   uniqueidentifier,
	@company   nvarchar(50),
	@name   nvarchar(50),
	@age   nvarchar(50),
	@Email  nvarchar(256)

AS
BEGIN

BEGIN TRANSACTION	

UPDATE [user] SET [company] = @company, [name] = @name, [age] = @age WHERE [UserId] = @UpUserID
UPDATE [mailinfo] SET [Email] = @Email WHERE [UserId] = @UpUserID

COMMIT TRANSACTION
	
END
GO
-------------------

UpdateCommandの中身の部分を
EXEC SP_ユーザ情報更新 @original_UserId, @company, @name, @age, @Email

にしたところエラーが出ました。
「sql_variant データ型から uniqueidentifier データ型への暗黙的な変換は許可されません。
このクエリを実行するには、CONVERT 関数を使います。」

そこで
EXEC SP_userupdate CONVERT(uniqueidentifier, @original_UserId), @company, @name, @age, @Email
もしくは
EXEC  SP_userupdate CAST (@original_UserId AS uniqueidentifier), @company, @name, @age, @Email
と書き換えてみましたが、どちらも動きませんでした。

どんな小さなことでも構いませんのでご指摘頂けませんでしょうか
よろしくお願いします。

引用返信 編集キー/
■8169 / inTopicNo.2)  Re[1]: UpdateCommandで複数のテーブル更新
□投稿者/ ちょっと休憩 (2回)-(2007/09/25(Tue) 17:00:48)
UpdateCommandではCONVERTやCASTを使わず

EXEC SP_ユーザ情報更新 @original_UserId, @company, @name, @age, @Email
--------------------------

ストアドプロシージャ側で変換

@UserIDstr sql_variant,

DECLARE @UserID uniqueidentifier
SET @UserID = CONVERT(uniqueidentifier, @UserIDstr)

UPDATE [user] SET [company] = @company, [name] = @name, [age] = @age WHERE [UserId] = @UserID
UPDATE [mailinfo] SET [Email] = @Email WHERE [UserId] = @UserID
--------------------------

とすると解決しました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -