[解決済み] ストアドプロシージャにオプションのOUTPUTパラメータを設定できますか?
2023-06-18 19:32:03
質問
複数のテーブルに値を挿入するため、多数の入力および出力パラメータを持つストアド プロシージャがあります。 場合によっては、ストアド プロシージャは 1 つのテーブルにしか挿入しません (入力パラメータに依存します)。 以下は、説明のためのモックアップシナリオです。
テーブル/データオブジェクト。
人物
Id
Name
Address
名前
Id
FirstName
LastName
住所
Id
Country
City
人を挿入するストアドプロシージャがあるとします。もし住所が存在しなければ、それを
Address
テーブルには追加しません。
したがって、ストアドプロシージャを呼び出すコードを生成するときに、わざわざ
Address
パラメータを追加する必要はありません。例えば
INPUT
パラメータでは、SQL Server がデフォルト値を提供することを許可しているので、これは大丈夫です。しかし
OUTPUT
パラメータをオプションにするためにストアドプロシージャで何をすれば、エラーが発生しないでしょうか...。
プロシージャまたは関数 'Person_InsertPerson' は、指定されていないパラメータ '@AddressId' が指定されていません。
どのように解決するのですか?
入力パラメータと出力パラメータの両方に、デフォルトを割り当てることができます。この例では
CREATE PROCEDURE MyTest
@Data1 int
,@Data2 int = 0
,@Data3 int = null output
AS
PRINT @Data1
PRINT @Data2
PRINT isnull(@Data3, -1)
SET @Data3 = @Data3 + 1
RETURN 0
最初のパラメータは必須で、2番目と3番目はオプションです。呼び出しルーチンによって設定されない場合、それらはデフォルト値が割り当てられます。異なる値と設定を使用して、SSMS でこのルーチンと次のテスト コール ルーチンをいじってみて、すべてが一緒に動作する方法を確認してください。
DECLARE @Output int
SET @Output = 3
EXECUTE MyTest
@Data1 = 1
,@Data2 = 2
,@Data3 = @Output output
PRINT '---------'
PRINT @Output
関連
-
[解決済み】各GROUP BY式は、外部参照でない列を少なくとも1つ含む必要があります。
-
[解決済み] 階層テーブルの設計
-
[解決済み] Sqlサーバーに制約が存在するかどうかを確認する方法は?
-
[解決済み] シンプルに保つ、クエリで複数のCTEを行う方法
-
[解決済み] 文字列から特定の文字を削除する
-
[解決済み] SQLサーバーを使用して文字列を切り詰める方法
-
[解決済み] SQL Server のストアドプロシージャを SQL Developer で実行するには?
-
[解決済み] SQL Serverでストアドプロシージャ内のテキストを検索する
-
[解決済み] SQL Serverにおける関数とストアドプロシージャの比較
-
[解決済み] ストアドプロシージャを出力パラメータで実行しますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー "INSERT EXEC文はネストできません。" "INSERT-EXEC文の中でROLLBACK文は使用できません。" これを解決するにはどうすればよいですか?
-
[解決済み] プロシージャは 'ntext/nchar/nvarchar' 型のパラメータ '@statement' を想定しています。
-
[解決済み] SQL Server Error "String Data, Right Truncation "の意味と修正方法について教えてください。
-
[解決済み] 管理者ユーザーで有効なxp_cmdshellへのアクセスが拒否されました。
-
[解決済み] T-SQL XOR 演算子
-
[解決済み] create関数は、バッチ内の唯一のステートメントでなければなりません。
-
[解決済み] すべてのテーブル、すべてのカラムを特定の値で検索する SQL Server [重複]。
-
[解決済み] SQL Serverでマテリアライズド・ビューを作成する方法は?
-
[解決済み] SQLサーバーを使用して文字列を切り詰める方法
-
[解決済み] SQL Server のストアドプロシージャを SQL Developer で実行するには?