データベースで更新するために、別のストアド プロシージャ内のストアド プロシージャからの結果セットを使用して、レコードが異なるかどうか (編集されているかどうか) を知ることができるかどうか疑問に思っていました。
私は次のようなことを考えていました:
CREATE PROCEDURE [SISACT].[find_ubicacion]
@ubicacion_to VARCHAR(8)
AS
SELECT ubicacion, descripcion FROM UBICACIONES WHERE ubicacion = @ubicacion_to
そしてそれを呼ぶ人
CREATE PROCEDURE [SISACT].[update_ubicacion]
@ubicacion VARCHAR(8),
@old_descripcion VARCHAR(60),
@new_descripcion VARCHAR(60)
AS
BEGIN
@old_descripcion = EXEC [SISACT].[find_ubicacion] (@ubicacion)
PRINT @old_descripcion
IF @old_descripcion != @new_descripcion
UPDATE [SISACT].[UBICACIONES] SET descripcion=@new_descripcion WHERE
ubicacion=@ubicacion
ELSE
PRINT 'Nothing to update'
END
例外EXEC [SISACT].[find_ubicacion] (@ubicacion)
は機能しません。SQL SERVER とストアド プロシージャは初めてです。これが本当に基本的なことでしたら申し訳ありません。数日でこれよりも複雑なことをしなければなりません。これは可能ですか?また、1つだけでなく多くのフィールドがある場合、どのフィールドを更新するかをどのように知ることができますか?これを行う「簡単な」方法はありますか?
注: 私はこれを知っています ->
@old_descripcion = EXEC [SISACT].[find_ubicacion] (@ubicacion)
PRINT @old_descripcion
IF @old_descripcion != @new_descripcion
間違っています。私が達成しようとしていることを理解してもらいたかっただけです。
ここでやろうとしているのは、更新する前にレコードが変更されたかどうかを確認することです。それが私が「find_ubicacion」を使用して古いものを見つけ、それを入力パラメーターと比較してから更新するかどうかを意図していることです
私が言ったように、これが愚かな質問または本当に基本的なものである場合は申し訳ありません.私は自分で学ぼうとしています. よろしくお願いします。