[pgsql-jp: 28677] はじめまして

井川 慶太 ikawa.keita @ sanei-hy.co.jp
2003年 1月 15日 (水) 09:57:08 JST


はじめまして、井川と申します。
よろしくお願いします。

ところで、トリガーでデータベースを作成するプロシージャを作ってみたんです
が、ストアドはできても実際に動かすとエラーが出ます。

sqlはこんな感じです。
--------------------------------------------------------------------------------
/*------------------------------------------------------------*
 * CREATEBBS02
 *
 * MABBS01(カテゴリマスター)にカテゴリが追加されたら
 * 対応するテーブルを作成する。
 *
 *------------------------------------------------------------*/
CREATE FUNCTION CREATEBBS02() RETURNS OPAQUE AS '
DECLARE
    table_name CHAR(12);
    a_output VARCHAR(4000);
BEGIN

table_name:="BBS.BBS02"||new.CACODE;

a_output:="CREATE TABLE "||table_name||"(
			NWCODE	CHAR(8) NOT NULL,
			NWTITL	VARCHAR(64) NOT NULL,
			NWPBCD	CHAR(6) NOT NULL,
			NWTEXT	TEXT NOT NULL,
			NWVWFL	CHAR(1) NOT NULL,
			NWPSWD	VARCHAR(8) NOT NULL,
			NWPATH	VARCHAR(32) NOT NULL,
			NWUPDT  TIMESTAMP,
			NWINDT  TIMESTAMP NOT NULL,
			CONSTRAINT P_"||table_name||" PRIMARY KEY(NWCODE),
			CONSTRAINT F_"||table_name||" FOREIGN KEY(NWPBCD) REFERENCES MASANEI03(SYCODE) MATCH FULL
);
COMMENT ON TABLE BBS."||table_name||" IS ""掲示板"""||table_name||";
COMMENT ON COLUMN BBS."||table_name||".NWCODE IS ""記事コード"";
COMMENT ON COLUMN BBS."||table_name||".NWTITL IS ""記事タイトル"";
COMMENT ON COLUMN BBS."||table_name||".NWPBCD IS ""掲載者コード"";
COMMENT ON COLUMN BBS."||table_name||".NWTEXT IS ""本文"";
COMMENT ON COLUMN BBS."||table_name||".NWVWFL IS ""表示フラグ"";
COMMENT ON COLUMN BBS."||table_name||".NWPSWD IS ""パスワード"";
COMMENT ON COLUMN BBS."||table_name||".NWPATH IS ""ファイル名"";
COMMENT ON COLUMN BBS."||table_name||".NWUPDT IS ""更新日"";
COMMENT ON COLUMN BBS."||table_name||".NWINDT IS ""作成日"";";

EXECUTE a_output;
END;
' LANGUAGE 'plpgsql';

CREATE TRIGGER CREATEBBS02 AFTER INSERT ON MABBS01
    FOR EACH ROW EXECUTE PROCEDURE CREATEBBS02();
--------------------------------------------------------------------------------

そこでMABBS01にINSERTかけると、

--------------------------------------------------------------------------------
WARNING:  Error occurred while executing PL/pgSQL function createbbs02
WARNING:  line 6 at assignment
SQL実行中に以下のエラーが発生しました。
WARNING:  line 6 at assignment
--------------------------------------------------------------------------------

と出ます。

どこがおかしいかまったくわからないのですが、
どなたか教えていただけないでしょうか?

new. のあたりかなとは思ってはいるんですが・・・
ちなみにMABBS01.CACODEはCHARの2バイトであり、

動作環境は
・Vine Linux 2.6r1
・PostgreSQL 7.3
です。

よろしくお願いします。




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