Files
mip/Modules/mip_friendly_messages.pck
hardya 1f0c8e4f90 Address #303 - removed <br> from friendly constraint messages.
Amend Qmax values defined within MESC.ctl
Fix bulk_load errors related to loading drawings through MIP_FILES
Amend mip_quotation to produce labour costs where meter size or service pressure is not a cost constraint.
Amend mip_quotation email messages.
Perform additional compilations during install to account for dependency links.
Make meter dimensions optional (mip.tab)

git-svn-id: http://locode01.ad.dom/svn/WEBMIP/trunk@3721 248e525c-4dfb-0310-94bc-949c084e9493
2008-02-26 17:54:21 +00:00

100 lines
3.2 KiB
Plaintext

CREATE OR REPLACE PACKAGE mip_friendly_messages IS
-- Author : HARDYA
-- Created : 19/02/2008 09:45:09
-- Purpose :
/** Attempt to produce a user friendly message for an Oracle message
%param p_ora_msg the message to be processed
%return either a friendly message or p_ora_msg
*/
FUNCTION get_friendly_message(p_ora_msg IN VARCHAR2) RETURN VARCHAR2;
END mip_friendly_messages;
/
CREATE OR REPLACE PACKAGE BODY mip_friendly_messages IS
PROCEDURE pl(p_in VARCHAR2) IS
l_fh utl_file.file_type;
BEGIN
dbms_application_info.set_module('MIP_FRIENDLY_MESSAGES'
,p_in);
l_fh := utl_file.fopen(location => 'WEBMIP_BULK_LOAD'
,filename => 'MIP_FRIENDLY_MESSAGES.txt'
,open_mode => 'A');
utl_file.put_line(l_fh
,to_char(SYSDATE
,'DD/MM/YYYY HH24:MI:SS') || ',' || p_in);
utl_file.fclose(l_fh);
END pl;
FUNCTION get_constraint_message(p_ora_msg IN VARCHAR2) RETURN VARCHAR2 IS
c_marker CONSTANT VARCHAR2(30) := 'constraint (';
c_marker_length CONSTANT NUMBER := length(c_marker);
l_msg constraint_messages.msg%TYPE;
l_constraint VARCHAR2(30);
l_constraint_name VARCHAR2(30);
l_start_posn NUMBER;
l_end_posn NUMBER;
BEGIN
-- get the complete constraint "user.constraint_name"
l_start_posn := instr(p_ora_msg
,c_marker) + c_marker_length;
l_end_posn := instr(p_ora_msg
,')'
,l_start_posn) - 1;
l_constraint := substr(p_ora_msg
,l_start_posn
,l_end_posn - l_start_posn + 1);
-- get the "constraint_name"
l_start_posn := instr(l_constraint
,'.') + 1;
l_constraint_name := substr(l_constraint
,l_start_posn);
BEGIN
SELECT msg
INTO l_msg
FROM constraint_messages
WHERE constraint_name = l_constraint_name;
EXCEPTION
WHEN no_data_found THEN
l_msg := NULL;
END;
IF l_msg IS NULL
AND l_constraint_name LIKE 'SYS!_C%' ESCAPE
'!'
OR l_constraint_name LIKE 'AVCON!_%' ESCAPE '!' THEN
-- this is a system generated check constraint and should not be appearing
l_msg := 'Application error. Attempting to violate check constraint ' ||
l_constraint_name ||
'. Please report this error to Advantica.';
END IF;
RETURN l_msg;
END get_constraint_message;
FUNCTION get_friendly_message(p_ora_msg IN VARCHAR2) RETURN VARCHAR2 IS
l_ora_msg VARCHAR2(240) := p_ora_msg;
l_sqlcode NUMBER;
l_msg VARCHAR2(2000);
BEGIN
l_sqlcode := substr(l_ora_msg
,1
,5);
IF instr(l_ora_msg
,'constraint (') > 0 THEN
l_msg := nvl(get_constraint_message(l_ora_msg)
,l_ora_msg);
ELSE
l_msg := l_ora_msg;
END IF;
return(l_msg);
END get_friendly_message;
END mip_friendly_messages;
/