srv_paramlen (拡張ストアド プロシージャ API)

適用対象: SQL サーバー

重要

この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに CLR 統合を使用してください。

リモート ストアド プロシージャ呼び出しのパラメーターのデータ長を返します。 この関数に代わって srv_paraminfo 関数が使用されるようになりました。

構文

  
int srv_paramlen (  
SRV_PROC *  
srvproc  
,  
int  
n   
);  

引数

srvproc
特定のクライアント接続のためのハンドル (この場合は、リモート ストアド プロシージャ呼び出しを受け取るハンドル) である SRV_PROC 構造体を指すポインターです。 この構造体には、アプリケーションとクライアントの間の通信やデータを管理するために、拡張ストアド プロシージャ API ライブラリで使用する情報が格納されます。

n
パラメーターの番号を示します。 最初のパラメーターは 1 です。

返品

パラメーター データの実際の長さをバイト数で返します。 n 番目のパラメーターがない場合、またはリモート ストアド プロシージャがない場合は、-1 を返します。 n 番目のパラメーターが NULL である場合は 0 を返します。

パラメーターが次の Microsoft SQL Server 2005 (9.x) システム データ型のいずれかである場合、この関数は次の値を返します。

新しいデータ型 入力データ長
BITN NULL: 1

ZERO: 1

>=255: N/A

<255: N/A
BIGVARCHAR NULL: 0

ZERO: 1

>=255: 255

<255: 実際の len
BIGCHAR NULL: 0

ZERO: 255

>=255: 255

<255: 255
BIGBINARY NULL: 0

ZERO: 255

>=255: 255

<255: 255
BIGVARBINARY NULL: 0

ZERO: 1

>=255: 255

<255: 実際の len
NCHAR NULL: 0

ZERO: 255

>=255: 255

<255: 255
NVARCHAR NULL: 0

ZERO: 1

>=255: 255

<255: 実際の len
NTEXT NULL: -1

ZERO: -1

>=255: -1

<255: -1

* actual len = マルチバイト文字列の長さ (cch)

解説

リモート ストアド プロシージャ パラメーターのデータ長には、それぞれ実際値および最大値があります。 NULL 値を許容しない標準固定長データ型では、長さの実際値と最大値は等しくなります。 可変長データ型では、この 2 つの値が異なる場合があります。 たとえば、varchar(30) として宣言したパラメーターには、長さが 10 バイトしかないデータを格納することが可能です。 このパラメーターは実際の長さが 10 で、最大の長さが 30 です。 srv_paramlen 関数は、リモート ストアド プロシージャの実際のデータ長をバイト数で取得します。 パラメーターの最大のデータ長を取得するには、srv_parammaxlen を使用します。

パラメーターを指定してリモート ストアド プロシージャを呼び出す場合、パラメーターは名前で指定することも、名前を使用せずにその位置を指定して渡すこともできます。 名前によるパラメーター指定と位置によるパラメーター指定を混合してリモート ストアド プロシージャを呼び出すと、エラーが発生します。 エラーが発生しても SRV_RPC ハンドラーは呼び出されますが、パラメーターが存在しないと見なされ、srv_rpcparams は 0 を返します。

重要

拡張ストアド プロシージャのソース コードを十分に確認し、コンパイル済み DLL を、運用サーバーにインストールする前にテストする必要があります。 セキュリティの確認およびテストについて詳しくは、Microsoft の Web サイトをご覧ください。

参照

srv_paraminfo (拡張ストアド プロシージャ API)
srv_rpcparams (拡張ストアド プロシージャ API)