LOTUS CONNECTOR
ストアドプロシージャを作成するときは、必要な結果セットのみを作成するように注意してください。明らかに 2 つ以上の結果セットを生成するストアドプロシージャを作成するのは避けてください。たとえば、2 つの選択ステートメントがあるストアドプロシージャ (たとえば、次のサンプルの select1) は、Lotus Connector for OLE DB では処理できません。複数の選択ステートメントを 1 つに結合するには、Union 演算子を使用する方法と、データをローカル変数または一時テーブルに格納する方法があります。
create table oledb_test (descriptionID int, description varchar(200), updtQty int)
go
insert into oledb_test values (1,"My description", 0)
create procedure select1
as
select count(*) from oledb_test
select distinct @newDescription from oledb_test
ストアドプロシージャの中に挿入、更新、および削除ステートメントがある場合、そのステートメントの影響を受ける行の数が戻されます。OLE DB は影響を受ける行数を、結果セットとして扱います。したがって、次のサンプルのストアドプロシージャ update1 では、2 つの結果セットが生成されます。影響を受ける行数のレポートは、Transact-SQL の set nocount on コマンドによって無効にできます。したがって、次のサンプルのストアドプロシージャ update2 (set nocount コマンドを使用) では、選択ステートメントによって生成された結果セットのみが戻されます。
メモ set nocount をこのように使用することによって、パフォーマンスを向上させ、ネットワークトラフィックを減少させることができます。
create procedure update1 (@descriptionID int, @newDescription varchar(200))
update oledb_test
set description = @newDescription,
updtQty = updtQty + 1
where descriptionID = @descriptionID
select updtQty from oledb_test where descriptionID = @descriptionID
create procedure update2 (@descriptionID int, @newDescription varchar(200))
set nocount on
set nocount off