MySQLストアドプロシージャのパラメータをリストするSQLとは何ですか? information_schema.routines
テーブルにはストアドプロシージャ名が格納されていますが、パラメータが格納されている標準的な場所はないようです。mysqlストアドプロシージャのパラメータをリストする方法
3
A
答えて
11
より新しいバージョン(5.5.3 and aboveが)どのべきinformation_schema.parametersオブジェクトを導入していますmysql.proc
テーブルへ のアクセスを必要とします必要な情報を提供します。
SELECT *
FROM information_schema.parameters
WHERE SPECIFIC_NAME = 'your_procedure';
以前のバージョンのMySqlは、mysql.procテーブルへのアクセスに依存しています。列「param_listは」興味のある名前の手続きのためにそこにあるパラメータ情報のすべてを持っている、それがカンマ区切りの文字列として保存されているような情報は、しかし、明らかに非正規化されている:。
SELECT param_list FROM mysql.proc WHERE db='your_database' AND name='your_procedure';
与える:
IN param1 VARCHAR(32), IN param2 int, ...
これは、プレゼンテーションのためのフォーマットに入れるためにもう少しの作業が必要です。 string.split関数は少なくともそれを整理します。
1
show create procedure
show create function
?これらの着信コールは、あなたが 見ているとbody
フィールドがlongblob
型であるところのMySQLの select cast(param_list as char) from mysql.proc where name='' and type='PROCEDURE'
0
テーブルのパラメータのリストを返すプロシージャを作成しました。それは誰かにとって有用かもしれません。
CREATE PROCEDURE Micropsitta.'getParams'(parname varchar(255))
BEGIN
set @wyraz=(select cast(param_list as char)
from mysql.proc
where type='PROCEDURE'
and name COLLATE utf8_polish_ci = parname COLLATE utf8_polish_ci);
drop TEMPORARY table if exists tab;
CREATE TEMPORARY TABLE tab (substrings varchar(255)) ENGINE=MEMORY;
IF ((@wyraz) <> '')
THEN
set @firstchar=1;
set @spacje=1;
set @lenghtWyraz=(select CHAR_LENGTH(@wyraz));
set @lenght=1;
while @lenght < @lenghtWyraz
DO
set @lenght=(select CHAR_LENGTH(SUBSTRING_INDEX(@wyraz,' ',@spacje)));
set @sub=(select SUBSTRING(@wyraz,@firstchar,@[email protected]+1));
set @firstchar=(select CHAR_LENGTH(SUBSTRING_INDEX(@wyraz,',',@spacje)))+2;
insert into tab (substrings)
select @sub;
set @[email protected]+1;
end while;
END IF;
select substrings as params from tab where substrings <>'';
END;
関連する問題
- 1. mysqlのストアドプロシージャのパラメータをJavaから取得する方法
- 2. MySQLのストアドプロシージャのパラメータ
- 3. mysqlストアドプロシージャの入力パラメータ値
- 4. MySQLストアドプロシージャのプリントをシミュレートする方法
- 5. MySQLのストアドプロシージャをバックアップする方法
- 6. execストアドプロシージャのパラメータを渡す方法
- 7. セットアップ方法MYSQLストアドプロシージャのログ
- 8. mysqlのストアドプロシージャを使用してパラメータを出力する方法は?
- 9. MySQLでストアドプロシージャをスケジュールする方法
- 10. MySQL:ストアドプロシージャをテーブルにリンクする方法
- 11. MySQLの中でキャストする方法ストアドプロシージャ
- 12. EFストアドプロシージャにパラメータを渡す方法は?
- 13. mysqlの別のストアドプロシージャからストアドプロシージャを呼び出す方法は?
- 14. MySQLのストアドプロシージャ内でストアドプロシージャを呼び出す方法
- 15. MySQLのパラメータを送信する方法
- 16. MySqlストアドプロシージャ:プロシージャテーブルからの選択方法
- 17. JavaからMysqlストアドプロシージャ配列パラメータ
- 18. MySqlストアドプロシージャWHEREパラメータに応じて「可変」
- 19. MySQLのストアドプロシージャを回避するデータのリストを返す
- 20. ASP.Net VBストアドプロシージャでNULLパラメータを使用する方法 - NULLの整数をストアドプロシージャに渡す方法
- 21. CでSQL Serverストアドプロシージャの数値パラメータを使用する方法#
- 22. mysqlの値を返すストアドプロシージャを定義する方法
- 23. ストアドプロシージャ内でストアドプロシージャを呼び出す方法(2つのパラメータを使用)
- 24. mysqlストアドプロシージャの2つのカラム値を比較する方法
- 25. MySQL 5.5のストアドプロシージャの例外メッセージを取得する方法
- 26. 複数のレコードを返すストアドプロシージャにパラメータを渡す方法
- 27. MySQL:ストアドプロシージャの結果をストアドファンクション内で取得する方法は?
- 28. MySQLストアドプロシージャのループ値を取得する方法は?
- 29. MySQLストアドプロシージャのXML要素をループする方法は?
- 30. 選択ステートメントとパラメータから値を挿入するmysqlストアドプロシージャ
http://stackoverflow.com/questions/733349/list-of-stored-procedures-functions-mysql-command-lineを参照してください。本文テキストなしでパラメータを分離できるかどうか確かめてください – kaj
どのバージョンを使用していますか?新しいバージョンにはinformation_schema.parametersがあります。古いバージョンでは、mysql.proc - column paramlistを見てください。(彼らは素晴らしいフォーマットではありませんが) – dash
@dash bang on、どうやってそのテーブルを見逃していますか?私は5.5.9を使用しています。あなたが答えとしてそれを置くなら、私はそれを受け入れるでしょう。 – icc97