[pgsql-jp: 27868] Re: 16進数文字列を数値にする方法はありますか?

SATO Hiroyuki hiroyuki @ navitime.co.jp
2002年 11月 2日 (土) 20:51:44 JST


佐藤です。

返信ありがとうございます。
以下の関数で実現できました。
バージョン:postgres (PostgreSQL) 7.2.2

----(↓ここから引用↓)----
CREATE FUNCTION f_to_int_from_hex( TEXT ) RETURNS INTEGER AS
'	DECLARE
		sql TEXT;
		ret INTEGER;
		cur REFCURSOR;
	BEGIN
		sql := ''SELECT X'''''' || $1 || '''''''';
		OPEN cur FOR EXECUTE sql;
		FETCH cur INTO ret;
		CLOSE cur;
		RETURN ret;
	END;
' LANGUAGE 'plpgsql';
----(↑ここまで引用↑)----

ところで、この関数を作成するにあたって、書籍『PostgreSQL7.1
日本語マニュアル』の565ページを参照いたしました。そこには次
のような記述があります。

http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/plpgsql-description.html#PLPGSQL-STATEMENTS-EXECUTING-DYN-QUERIES
----(↓ここから引用↓)----
結果を動的に作成された SELECT から抜き出す唯一の方法は後で述
べる FOR ... EXECUTE を使用することです。
----(↑ここまで引用↑)----

この「FOR ... EXECUTE」は、今回私が使用した「OPEN FOR
EXECUTE」
http://www.postgresql.jp/document/pg721doc/programmer/plpgsql-cursors.html#AEN11758
と同じなのでしょうか?7.1のマニュアルには「OPEN FOR EXECUTE」
の記述がないようですが。
--------
SATO Hiroyuki <hiroyuki @ navitime.co.jp>

From: sugita @ sra.co.jp
Subject: [pgsql-jp: 27867] Re: 16進数文字列を数値にする方法はありますか?
Date: Sat, 02 Nov 2002 19:46:51 +0900 (JST)

>   オリジナルの機能ではできなくて、ユーザ定義関数を作成すればできます。



pgsql-jp メーリングリストの案内