検索

SQL Server 7.0 入門 (8)

Dec 24, 2016 pm 05:41 PM
serversql

ストアド プロシージャで結果を返す
ストアド プロシージャから結果を返す方法は 3 つあります:
1. 結果セットを返す
これは、クライアント アプリケーションが結果を返す最も一般的な方法です。結果セットは、SELECT ステートメントを使用してデータを選択することによって生成されます。結果セットは、永続テーブル、一時テーブル、またはローカル変数から生成できます。結果を別のストアド プロシージャに返すのは効率的なアプローチではありません。ストアド プロシージャは、別のストアド プロシージャによって作成された結果セットにアクセスできません。
たとえば、永続テーブルから結果セットを返します:
USE pubs
GO
CREATE PROCEDURE ap_CreateResultFromPermtable
AS
SELECT au_iname FROM authors
GO
たとえば、ローカル変数から結果セットを作成します:
USE pubs
GO
CREATE PROCEDURE ap_CreateResultFrom Variable
AS
DECLARE @au_iname char(20)
SELECT @au_iname = au_iname FROM authors
WHERE au_id = '172-32-1176'
SELECT @au_id
GO
2 OUTPUTパラメータの値を設定します
2.パラメーターは、ストアド プロシージャからデータを抽出して結果を取得するためによく使用されます。パラメーターがストアド プロシージャに転送されるときに OUTPUT として定義されている場合、パラメーターへの変更はストレージを終了した後も有効になります。
例:
USE pubs
GO
CREATE PROCEDURE ap_SetOutputVar @count integer OUTPUT
AS
SELECT @count = count(*) FROM authors
GO
出力パラメータから値を取得します:
USE pubs
GO
CREATE PROCEDURE ap_GetOutputVar
AS
DECLARE @num integer
EXECUTE ap_SetOutputVar @num OUTPUT
PRINT “カウントは”+convert(char,@num)
GO
· カーソルを OUTPUT パラメータとして使用します。カーソルは OUTPUT (出力) パラメーターを使用できますが、入力パラメーターとして使用することはできません。つまり、結果としてカーソルを返すことはできますが、プロシージャに転送することはできません。カーソルをパラメータとして使用する場合は、OUTPUT および VARYING として修飾する必要があります。 VARYING キーワードは、結果セットが出力パラメータをサポートするために使用されることを示します。これにより、呼び出し元のプロシージャに結果セットを返す機能が提供されます。
例:
pubs
GO
CREATE PROCEDURE GetTitleCount @count_cursor CURSOR VARYING OUTPUT
AS
SET @count_cursor = CURSOR
FOR
SELECT au_id,count(*)
FROM titleauthors
GROUP BY au_id
_OPENまたは
GO
3 , RETURNパラメータでステータスを返します
ストアドプロシージャからエラーコードを返す方法です。ストアド プロシージャは常にステータス値を返します。ユーザーは RETURN ステートメントを使用して独自のステータスを返すこともできます。
例:
USE pubs
GO
CREATE PROCEDURE ap_SetReturnStatus
AS
DECLARE @count integer
SELECT @count = count(*) FROM authors
IF @count = 0
RETURN(1)
ELSE
RETURN (0)
GO
たとえば、返されたステータスを取得します:
USE pubs
GO
CREATE PROCEDURE ap_GetReturnStatus
AS
DECLARE @status integer
EXECUTE @status = ap_SetReturnStatus
IF @status = 1
PRINT “No rows found”
ELSE
PRINT “ suc "cessful"
GO

ストアド プロシージャでのエラー処理
他のプログラムと同様、ストアド プロシージャでのエラー処理は非常に重要です。システムの変更 @@error は、各 Transact SQL ステートメントの実行後に値を取得します。実行が成功した場合、@@error の値は 0 です。エラーが発生した場合、@@error にはエラー情報が含まれます。 @@error システム変数は、ストアド プロシージャのエラー処理にとって非常に重要です。
注: エラーを防ぐために、@@error で設定できる値は sysmessages テーブルの「error」に反映されます。
ストアド プロシージャには 2 種類のエラーがあります:
1. データベース関連のエラー
これらのエラーは、データベース内の不整合によって発生します。システムは、特定のデータベースの問題を示すために 0 以外の @@error 値を使用します。 Transact SQL の実行後、発生したエラーは @@error を通じて取得できます。 @@error がゼロ以外であることが判明した場合は、必要なアクションを実行する必要があり、ほとんどの場合、ストアはそれ以上の処理を行わずに戻ります。次の例は、データベース エラーが発生する一般的な方法を示しています。このプロシージャは、呼び出し側プログラムからアクセスできるように、エラー コードを出力変数に配置します。
pubs を使用
GO
CREATE PROCEDURE ap_TrapDatabaseError @return_code integer OUTPUT
AS
UPDATE authors SET au_iname = "Jackson"
WHERE au_iname = "Smith"
IF @@error SELECT @return_code = @ @エラー
Return
end
else
@Return_Code = 0
Go
2、ビジネス ロジック エラー
これらのエラーはビジネス ルール違反によって発生します。これらのエラーを取得するには、まずビジネス ルールを定義し、そのルールに基づいて必要なエラー検出コードをストアド プロシージャに追加する必要があります。これらのエラーを報告するには、RAISERROR ステートメントがよく使用されます。 RAISERROR は、ユーザー定義のエラーを返し、@@error 変数をユーザー定義のエラー番号に設定する機能を提供します。エラー メッセージは動的に作成することも、エラー番号に基づいて「sysmessages」テーブルから取得することもできます。エラーが発生すると、そのエラーはサーバー エラー メッセージの形式でクライアントに返されます。 RAISERROR コマンドの構文は次のとおりです:
RAISERROR (msg_id | msg_str, severity, state
[, argument ][,...n]])
[WITH options]
Msg_id はユーザー定義メッセージの ID を指定します。 、システム テーブルの「sysmessages」に保存されます。
Msg_str は、メッセージを動的に作成するために使用されるメッセージ文字列です。これは、C 言語の「printf」に非常に似ています。
重大度は、ユーザーによって割り当てられたエラー メッセージの重大度を定義します。
State は 1 ~ 127 の任意の整数値で、誤った通話ステータス情報を表します。負の状態値はデフォルトで 1 になります。
OPTIONS は、間違ったカスタマイズ オプションを示します。 OPTIONS の有効な値は次のとおりです:
1) LOG。
エラーをサーバー エラー ログと NT イベント ログに記録します。このオプションには、重大度 19 ~ 25 のメッセージが必要です。このようなメッセージを発行できるのはシステム管理者だけです。
2) ちょっと待ってください。
クライアントサーバーにメッセージを即座に送信します。
3) 設定。
重大度レベルに関係なく、@@error の値を msg_id または 5000 に設定します。

リモート プロシージャ コール
SQL Server は、異なるサーバー上に存在するストアド プロシージャを呼び出す機能を提供します。このようなストアド プロシージャの呼び出しは、リモート ストアド プロシージャ呼び出しと呼ばれます。ある SQL Server から別の SQL Server に呼び出しを転送するには、2 つのサーバーが相互に有効なリモート サーバーとして定義されている必要があります。
リモート サーバーの構成を設定します。
· 特定のサーバーのグループを展開します。
サーバーを右クリックし、[プロパティ] をクリックします。
· 「他の SQL Server が RPC 経由でこの SQL サーバーにリモート接続することを許可する」オプションを設定します。
[クエリ タイムアウト] オプションの値を設定します。これは、クエリ処理からの戻りを待つ秒数を指定します。デフォルト値は 0 で、無制限の待機時間が許可されることを意味します。
· 構成オプションを設定した後、「OK」をクリックします。
· 変更はサーバーを再起動した後に有効になります。
· 他のリモート サーバーでも同じ手順を繰り返します。
リモート ストアド プロシージャを呼び出すには、サーバーの名前を指定し、その後にデータベースの名前と所有者の名前を指定する必要があります。以下は、別のサーバー (Server2) 上のストアド プロシージャを呼び出す例です。
Exec server2.pubs.dbo.myproc

Doudou のコメント:
これは、SQL Server の一般知識の表面的な紹介にすぎません。また、データベース マネージャーではなく、SQL Server データベースに基づいてアプリケーションを作成するプログラマーを対象としています。しかし、アプリケーション プログラマーにとって、データベース管理を理解することも非常に役立ちます。プログラムの最適化にも非常に役立つデータベース管理については、将来的には自分で学ぶことをお勧めします。

上記は SQL Server 7.0 入門 (8) の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。

——————全文終了————————


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
MySQL:初心者が習得するための必須スキルMySQL:初心者が習得するための必須スキルApr 18, 2025 am 12:24 AM

MySQLは、初心者がデータベーススキルを学ぶのに適しています。 1.MySQLサーバーとクライアントツールをインストールします。 2。selectなどの基本的なSQLクエリを理解します。 3。マスターデータ操作:テーブルを作成し、データを挿入、更新、削除します。 4.高度なスキルを学ぶ:サブクエリとウィンドウの関数。 5。デバッグと最適化:構文を確認し、インデックスを使用し、選択*を避け、制限を使用します。

MySQL:構造化データとリレーショナルデータベースMySQL:構造化データとリレーショナルデータベースApr 18, 2025 am 12:22 AM

MySQLは、テーブル構造とSQLクエリを介して構造化されたデータを効率的に管理し、外部キーを介してテーブル間関係を実装します。 1.テーブルを作成するときにデータ形式と入力を定義します。 2。外部キーを使用して、テーブル間の関係を確立します。 3。インデックス作成とクエリの最適化により、パフォーマンスを改善します。 4.データベースを定期的にバックアップおよび監視して、データのセキュリティとパフォーマンスの最適化を確保します。

MySQL:説明されている主要な機能と機能MySQL:説明されている主要な機能と機能Apr 18, 2025 am 12:17 AM

MySQLは、Web開発で広く使用されているオープンソースリレーショナルデータベース管理システムです。その重要な機能には、次のものが含まれます。1。さまざまなシナリオに適したInnodbやMyisamなどの複数のストレージエンジンをサポートします。 2。ロードバランスとデータバックアップを容易にするために、マスタースレーブレプリケーション機能を提供します。 3.クエリの最適化とインデックスの使用により、クエリ効率を改善します。

SQLの目的:MySQLデータベースとの対話SQLの目的:MySQLデータベースとの対話Apr 18, 2025 am 12:12 AM

SQLは、MySQLデータベースと対話して、データの追加、削除、変更、検査、データベース設計を実現するために使用されます。 1)SQLは、ステートメントの選択、挿入、更新、削除を介してデータ操作を実行します。 2)データベースの設計と管理に作成、変更、ドロップステートメントを使用します。 3)複雑なクエリとデータ分析は、ビジネス上の意思決定効率を改善するためにSQLを通じて実装されます。

初心者向けのMySQL:データベース管理を開始します初心者向けのMySQL:データベース管理を開始しますApr 18, 2025 am 12:10 AM

MySQLの基本操作には、データベース、テーブルの作成、およびSQLを使用してデータのCRUD操作を実行することが含まれます。 1.データベースの作成:createdatabasemy_first_db; 2。テーブルの作成:createTableBooks(idintauto_incrementprimarykey、titlevarchary(100)notnull、authorvarchar(100)notnull、published_yearint); 3.データの挿入:InsertIntoBooks(タイトル、著者、公開_year)VA

MySQLの役割:WebアプリケーションのデータベースMySQLの役割:WebアプリケーションのデータベースApr 17, 2025 am 12:23 AM

WebアプリケーションにおけるMySQLの主な役割は、データを保存および管理することです。 1.MYSQLは、ユーザー情報、製品カタログ、トランザクションレコード、その他のデータを効率的に処理します。 2。SQLクエリを介して、開発者はデータベースから情報を抽出して動的なコンテンツを生成できます。 3.MYSQLは、クライアントサーバーモデルに基づいて機能し、許容可能なクエリ速度を確保します。

MySQL:最初のデータベースを構築しますMySQL:最初のデータベースを構築しますApr 17, 2025 am 12:22 AM

MySQLデータベースを構築する手順には次のものがあります。1。データベースとテーブルの作成、2。データの挿入、および3。クエリを実行します。まず、createdAtabaseおよびcreateTableステートメントを使用してデータベースとテーブルを作成し、InsertINTOステートメントを使用してデータを挿入し、最後にSelectステートメントを使用してデータを照会します。

MySQL:データストレージに対する初心者向けのアプローチMySQL:データストレージに対する初心者向けのアプローチApr 17, 2025 am 12:21 AM

MySQLは、使いやすく強力であるため、初心者に適しています。 1.MYSQLはリレーショナルデータベースであり、CRUD操作にSQLを使用します。 2。インストールは簡単で、ルートユーザーのパスワードを構成する必要があります。 3.挿入、更新、削除、および選択してデータ操作を実行します。 4. Orderby、Where and Joinは複雑なクエリに使用できます。 5.デバッグでは、構文をチェックし、説明を使用してクエリを分析する必要があります。 6.最適化の提案には、インデックスの使用、適切なデータ型の選択、優れたプログラミング習慣が含まれます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール