2009-07-23 17 views
2

は、私は現在、特定のデータソースのSPのリストを取得するためにMS SQL Server 2005人のsp_stored_procedures

sp_stored_procedures 

ストアドプロシージャを実行していますよ。 PROCEDURE_NAME列とPROCEDURE_OWNER列でこのデータセットを照会する必要があります。 PROCEDURE_NAMEは奇妙な戻り値を持っているようです。名前の末尾にセミコロンと数字が追加されているようです。

sel_AppUser;1 
sel_AppUser_all;1 
sel_AppUser_by_login;1 
sel_Browsable;1 

ここsel_Browsable

最初
CREATE PROCEDURE [dbo].[sel_Browsable] 
@BrowsableID uniqueidentifier 
AS 
BEGIN 
SELECT * FROM Browsable WHERE browsableID = @BrowsableID FOR XML AUTO, ELEMENTS 
SELECT * FROM Attribute WHERE objectID = @BrowsableID FOR XML AUTO, ELEMENTS 
SELECT * FROM Search WHERE browsableID = @BrowsableID ORDER BY searchOrder FOR XML AUTO, ELEMENTS 
SELECT Attribute.* FROM Attribute INNER JOIN Search ON Attribute.objectID = Search.searchID WHERE browsableID = @BrowsableID ORDER BY searchOrder FOR XML AUTO, ELEMENTS 
SELECT Criterion.* FROM Criterion INNER JOIN Search ON Criterion.searchID = Search.searchID WHERE browsableID = @BrowsableID ORDER BY searchOrder, criterionOrder FOR XML AUTO, ELEMENTS 
SELECT Attribute.* FROM Attribute INNER JOIN Criterion ON Attribute.objectID = Criterion.criterionID INNER JOIN Search ON Criterion.searchID = Search.searchID WHERE browsableID = @BrowsableID ORDER BY searchOrder, criterionOrder FOR XML AUTO, ELEMENTS 
SELECT CriterionOperator.* FROM CriterionOperator INNER JOIN Criterion ON CriterionOperator.criterionID = Criterion.criterionID INNER JOIN Search ON Criterion.searchID = Search.searchID WHERE browsableID = @BrowsableID ORDER BY searchOrder, criterionOrder, operatorOrder FOR XML AUTO, ELEMENTS 
SELECT CriterionValue.* FROM CriterionValue INNER JOIN Criterion ON CriterionValue.criterionID = Criterion.criterionID INNER JOIN Search ON Criterion.searchID = Search.searchID WHERE browsableID = @BrowsableID ORDER BY searchOrder, criterionOrder, criterionValueOrder FOR XML AUTO, ELEMENTS 
END 

だ私は(NUM_INPUT_PARAMSは、SQL Serverに実装されるまで)、これらの数字は、パラメータの数を表しているかもしれないと思ったが、私は追加および削除のパラメータをして見ていないてきましたリスティングの変更。

これらの数字は何を意味していますか?

答えて

2

異なる名前のストアドプロシージャを番号で区別し、一度に削除することができます。構文は、SQL 2k8からstill validです。

です。 number同じ名前の のグループ化に、 が使用されるオプションの整数です。これらのグループ化されたプロシージャー は、1つの DROP PROCEDUREステートメントを使用して一緒にドロップできます。たとえば、 という名前のアプリケーションでは、orderproc; 1、 orderproc; 2という名前のプロシージャーを というプロシージャーを使用することがあります。 PROCEDURE orderprocステートメントはグループ全体を にします。DROP 名前に の区切り識別子が含まれている場合、数字 は 識別子の一部として含めないでください。 procedure_nameのみの適切な 区切り文字を使用してください。

この機能はofficial deprecated listにあります。

ところでカタログビューを使用して、手順を取得することができます:sys.procedures。私は、手順を使用するよりはるかに簡単にビューを使用して見つける。

0

CREATE PROCEDUREのMSDNのドキュメントを参照してください。 procedure_nameの "Arguments"セクションの下では、その種類の番号を追加することは推奨されなくなりました。構文図から、; 1はプロシージャー名の一部ではなく、オプションです。それ以来。文字はT-SQL identifiersで合法ではない、あなたは前の文字列を見ることができます。クエリ結果に表示されます。

1

さて、私はそれらが何を意味するのか分かりません - それはバージョンかもしれませんか?

しかし、私はsp_stored_proceduresへの代替をお勧めします:

select specific_schema, specific_name, * from information_schema.routines 

それは(特に)あなたの名前と所有者を与え、それは奇妙な文字を持っていません。

関連する問題