⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frie_value2.sql

📁 Java写的ERP系统
💻 SQL
字号:
CREATE OR REPLACE FUNCTION FRIE_Value2
(
	Product_ID		IN	NUMBER
)
RETURN NVARCHAR2
AS
/*************************************************************************
 * The contents of this file are subject to the Compiere License.  You may
 * obtain a copy of the License at    http://www.compiere.org/license.html 
 * Software is on an  "AS IS" basis,  WITHOUT WARRANTY OF ANY KIND, either 
 * express or implied. See the License for details. Code: Compiere ERP+CPM
 * Copyright (C) 1999-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved.
 *************************************************************************
 * $Id: FRIE_Value2.sql,v 1.4 2002/10/21 04:49:45 jjanke Exp $
 ***
 * Title:	Return Product Value with Vendor indicator
 * Description:	
 *			Cannot be used directly as mutating
 ************************************************************************/
 /*
	CREATE TABLE TEMP_PROD
	(	Product_ID	NUMBER,
		Value		VARCHAR2(60),
		CONSTRAINT TEMP_Key PRIMARY KEY (Product_ID)
    	USING INDEX TABLESPACE INDX	);
	INSERT INTO TEMP_PROD (PRODUCT_ID, VALUE)
	SELECT M_Product_ID, FRIE_Value2(M_Product_ID)
	FROM M_Product WHERE AD_Client_ID=1000000;
	UPDATE M_Product p
	SET Value = (SELECT Value FROM TEMP_Prod t WHERE p.M_Product_ID=t.Product_ID)
	WHERE EXISTS (SELECT * FROM TEMP_Prod t WHERE p.M_Product_ID=t.Product_ID AND Value IS NOT NULL);
	COMMIT;
	DROP TABLE TEMP_Prod;
 */
 	v_BPartner_ID			NUMBER;
	v_Value					M_Product.Value%TYPE;
	v_Prefix				VARCHAR2(2);
BEGIN
	--	Get Value/Partner
	SELECT	p.Value, DECODE(po.C_BPartner_ID,
			1001881,	'BA',		-- 	Barum
			1001725,	'BR',		--	Bridgestone
			1001738,	'CO',		--	Conti
			1001853,	'SE',		--	Semperit
			1001755,	'FI',		--	Firestone
			1001759,	'FU',		--	Fulda
			1001763,	'GY',		--	Goodyear
			1001792,	'KE',		--	Kelly
			1001795,	'KL',		--	Kleber
			1001883,	'LE',		--	Lee
			1001812,	'ME',		--	Metzeler
			1001815,	'MI',		--	Michelin
			1001824,	'pi',		--	Pirelli Motorrad
			1001868,	'PI',		--	Pirelli
			1001744,	'DU',		--	Dunlop
			1001864,	'UN',		--	Uniroyal
			1001872,	'VR',		--	Vredestein
			1001877,	'YO',		--	Yokohama
						'')			--	Othewise
	  INTO	v_Value, v_Prefix
	FROM 	M_Product p, M_Product_PO po	--	will through exception, if not found
	WHERE p.M_Product_ID=po.M_Product_ID
	  AND po.IsCurrentVendor='Y'
	  AND p.M_Product_ID=Product_ID
	  AND RowNum=1;		--	to be sure

	--	Are the first two characters numbers?
	IF (SUBSTR(v_Value,1,1) < '0' OR SUBSTR(v_Value,1,1) > '9'		--	not NLS compliant
			OR SUBSTR(v_Value,2,1) < '0' OR SUBSTR(v_Value,2,1) > '9') THEN
	--	DBMS_OUTPUT.PUT_LINE('No Number: ' || Value);
		RETURN SUBSTR(v_Value,1,40);
	END IF;
	--	Return with prefix
	IF (LENGTH(v_Prefix) = 2) THEN
	--	DBMS_OUTPUT.PUT_LINE('Prefix');
		RETURN SUBSTR(v_Prefix || v_Value, 1,40);
	END IF;
	--	Otherwise
	Return SUBSTR(v_Value, 1, 40);

	--	We must catch error as otherwise the function returns null
EXCEPTION 
	WHEN OTHERS THEN
--	DBMS_OUTPUT.PUT('Error: (ID=' || Product_ID || ') ' || SQLERRM);
	-- just return value of product
	SELECT	Value || N' '
	  INTO	v_Value
	FROM 	M_Product
	WHERE 	M_Product_ID=Product_ID;
--	DBMS_OUTPUT.PUT_LINE(' - ' || Value);
	--
	RETURN v_Value;

END FRIE_Value2;
/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -