ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文
Oracle ストーアード入り口
日時: 2009/02/20 01:02
名前: lightbox



CREATE or REPLACE FUNCTION today
	RETURN DATE
	AS
	RET_VALUE	DATE;
BEGIN
	BEGIN
		select 売上日付 into RET_VALUE from コントロールマスタ where キー = '1';
	EXCEPTION
		WHEN OTHERS THEN
			RET_VALUE := SYSDATE;
	END;
	RETURN RET_VALUE;
END today;
select * from USER_SOURCE
order by LINE
select * from USER_ERRORS
order by LINE
【*_SOURCE】 http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19228-03/statviews_2.htm#112741 【*_ERRORS】 http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19228-03/statviews_1.htm#84046
メンテナンス

文字列型のテスト ( No.1 )
日時: 2007/05/17 18:33
名前: lightbox


日時: 2007/05/17 18:33
名前: lightbox
CREATE or REPLACE FUNCTION today
	RETURN VARCHAR2
	AS
	RET_VALUE	VARCHAR2(50);
BEGIN
	BEGIN
		select 売上日付 into RET_VALUE from コントロールマスタ where キー = '1';
		RET_VALUE := 'ああああああ';
	EXCEPTION
		WHEN OTHERS THEN
			RET_VALUE := SYSDATE;
	END;
	RETURN RET_VALUE;
END today;
このアーティクルの参照用URLをクリップボードにコピー メンテナンス
数値型のテスト ( No.2 )
日時: 2007/05/17 18:35
名前: lightbox
CREATE or REPLACE FUNCTION 社員数
	RETURN NUMBER
	AS
	RET_VALUE	NUMBER;
BEGIN
	BEGIN
		select count(*) into RET_VALUE from "社員マスタ";
	EXCEPTION
		WHEN OTHERS THEN
			RET_VALUE := 0;
	END;
	RETURN RET_VALUE;
END 社員数;
このアーティクルの参照用URLをクリップボードにコピー メンテナンス
文字列で複数のデータを返す ( No.3 )
日時: 2007/05/17 18:36
名前: lightbox
CREATE or REPLACE FUNCTION 社員数
	RETURN VARCHAR2
	AS
	RET_VALUE	VARCHAR2(20);
	RET_VALUE1	NUMBER;
	RET_VALUE2	NUMBER;
BEGIN
	BEGIN
		select count(*) into RET_VALUE1 from "社員マスタ";
	EXCEPTION
		WHEN OTHERS THEN
			RET_VALUE := 0;
	END;
	BEGIN
		select count(*) into RET_VALUE2 from "商品マスタ";
	EXCEPTION
		WHEN OTHERS THEN
			RET_VALUE := 0;
	END;
	
	RET_VALUE := RET_VALUE1 || ',' || RET_VALUE2;

	RETURN RET_VALUE;
END 社員数;
このアーティクルの参照用URLをクリップボードにコピー メンテナンス
集計更新 ( No.4 )
日時: 2013/05/01 23:28
名前: lightbox
↓日次更新セット
http://lightbox.on.coocan.jp/download/PLSQL_01.lzh

/*
/*==========================================================
 日次更新処理
===========================================================*/
CREATE or REPLACE PROCEDURE 日次更新
	(
	PM_DATE	IN	DATE
	)
	AS

	FLD_ROWID	ROWID;
	FLD_取引先	VARCHAR2(4);
	FLD_商品	VARCHAR2(4);
	FLD_数量	NUMBER;
	FLD_金額	NUMBER;
	FLD_日付	DATE;

	ERROR_FLG	NUMBER(1,0);

/*==========================================================
 カーソル
===========================================================*/
CURSOR cur_main is
	select ROWID
		,取引先コード
		,商品コード
		,数量
		,金額 
		,取引日付
	 from 取引データ
	 where 取引日付 = PM_DATE
	 and 更新済 is NULL;
 
BEGIN
/*==========================================================
 初期処理
===========================================================*/
DBMS_OUTPUT.PUT_LINE('日次更新 START');
SAVEPOINT UPD_START;
ERROR_FLG := 0;


/*==========================================================
 主処理
===========================================================*/
OPEN cur_main;

LOOP
	FETCH cur_main INTO
		FLD_ROWID,
		FLD_取引先,
		FLD_商品,
		FLD_数量,
		FLD_金額,
		FLD_日付;
	if cur_main%NOTFOUND then
		EXIT;
	end if;

	LOOP
		UPDATE 得意先集計
			set
				更新日 = SYSDATE
				,当月売上金額 = 当月売上金額 + FLD_金額
			where 
				請求先 = FLD_取引先
			and	経過月 = EXTRACT(month from FLD_日付)
			;
		IF SQL%NOTFOUND THEN
			INSERT INTO 得意先集計
			(請求先,経過月,当月売上金額,更新日)
			VALUES(FLD_取引先,EXTRACT(month from FLD_日付),0,SYSDATE);
		ELSE
			EXIT;
		END IF;
	END LOOP;

	LOOP
		UPDATE 商品集計
			set
				更新日 = SYSDATE
				,当月売上数量 = 当月売上数量 + FLD_数量
				,当月売上金額 = 当月売上金額 + FLD_金額
			where 
				商品コード = FLD_商品
			and	経過月 = EXTRACT(month from FLD_日付)
			;
		IF SQL%NOTFOUND THEN
			INSERT INTO 商品集計
			(商品コード,経過月,当月売上数量,当月売上金額,更新日)
			VALUES(FLD_商品,EXTRACT(month from FLD_日付),0,0,SYSDATE);
		ELSE
			EXIT;
		END IF;
	END LOOP;

	UPDATE 取引データ
		SET "更新済" = '1'
	WHERE	ROWID = FLD_ROWID;

END LOOP;

CLOSE cur_main;

/*==========================================================
 終了処理
===========================================================*/
if ERROR_FLG != 0 then
	ROLLBACK TO UPD_START;
	DBMS_OUTPUT.PUT_LINE('異常終了');
else
	DBMS_OUTPUT.PUT_LINE('正常終了');
end if;

EXCEPTION
	WHEN OTHERS THEN
		DBMS_OUTPUT.PUT_LINE('例外発生');
		ROLLBACK TO UPD_START;
END 日次更新;

/
このアーティクルの参照用URLをクリップボードにコピー メンテナンス
動的 PL/SQL ( No.5 )
日時: 2007/05/21 16:44
名前: lightbox
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/appdev.102/B19257-01/dynamic.html
このアーティクルの参照用URLをクリップボードにコピー メンテナンス