Click here to Skip to main content
15,890,724 members
Home / Discussions / Database
   

Database

 
GeneralRe: upgrading databse issue Pin
Ashfield5-Oct-08 9:07
Ashfield5-Oct-08 9:07 
GeneralRe: upgrading databse issue Pin
Yulianto.7-Oct-08 0:50
Yulianto.7-Oct-08 0:50 
AnswerUse upgrade scripts Pin
David Mujica3-Oct-08 3:28
David Mujica3-Oct-08 3:28 
QuestionProblem installin SQL Server Express 2005 with Advance Services SP1 Pin
Jassim Rahma2-Oct-08 14:34
Jassim Rahma2-Oct-08 14:34 
QuestionOracle Stored Proc should return null resultset, but first row of table is null [modified] Pin
Mel Padden2-Oct-08 6:13
Mel Padden2-Oct-08 6:13 
QuestionSQL Express 2005 problem Pin
Jassim Rahma2-Oct-08 2:59
Jassim Rahma2-Oct-08 2:59 
AnswerRe: SQL Express 2005 problem Pin
Ashfield2-Oct-08 3:15
Ashfield2-Oct-08 3:15 
QuestionHelp Optimizing the Following SP Pin
Vimalsoft(Pty) Ltd2-Oct-08 2:30
professionalVimalsoft(Pty) Ltd2-Oct-08 2:30 
Good Afternoon All

I have a SP that i need your help to Optimize it.


SQL
ALTER   PROCEDURE [sde].[PROPERTY_LIST]

	@ACTIVE_USER_ID 		INTEGER	=	0,
	@PARCEL_NO 			VARCHAR(50)	=	'', 
	@BOUNDARY_AREA 		VARCHAR(40)	=	'',
	@NUM_KEY 			VARCHAR(10)	=	'',
	@LIS_KEY 			VARCHAR(50)	=	'',
	@OWNER_NAME		VARCHAR(500)	=	'',
	@PARCEL_PORTION_NO 	VARCHAR(10)	=	'',
	@CELL_NO 			VARCHAR(50)	=	'', 
	@ATTRIB_CODE 		VARCHAR(12)	=	'',
	@EXTENSION 			INTEGER	=	0, 
	@FUNC_KEY 			VARCHAR(30)	=	'',
	@PROVINCE_ID 		INTEGER	=	0, 
	@STREET_NO 			VARCHAR(500)	=	'', 
	@STREET_NAME 		VARCHAR(500)	=	'',
	@ID 				INTEGER 	=	0
AS
/*-------------MODIFIED BY SIVU 2007/05/30-----------
	ADDED [DESCRIPTION] COLUMN IN THE QUERY
*/
	SET @PARCEL_NO 		= ISNULL(@PARCEL_NO,'')
	SET @BOUNDARY_AREA 	= ISNULL(@BOUNDARY_AREA,'')
	SET @LIS_KEY 		= ISNULL(@LIS_KEY,'')
	SET @OWNER_NAME 		= ISNULL(@OWNER_NAME,'')
	SET @PARCEL_PORTION_NO 	= ISNULL(@PARCEL_PORTION_NO,'')
	SET @CELL_NO 		= ISNULL(@CELL_NO,'')
	SET @ATTRIB_CODE 		= ISNULL(@ATTRIB_CODE,'')
	SET @FUNC_KEY 		= ISNULL(@FUNC_KEY,'')
	SET @STREET_NO 		= ISNULL(@STREET_NO,'')
	SET @STREET_NAME 		= ISNULL(@STREET_NAME,'')
	SET @EXTENSION		= ISNULL(@EXTENSION, 0)

	IF @ACTIVE_USER_ID <> 0
	BEGIN
		IF @ID = 0
		BEGIN
			DECLARE @strSQL NVARCHAR(4000)
			
			SET @strSQL = 
				'SELECT DISTINCT TOP 200 PARCEL_PORTION_NO,
				PROPERTY_ID, PARCEL_NO AS PARCEL_NO, ROLL_REMARK, RATEABLE, EXTENSION, FUNC_KEY, ISNULL(P.NOTIFICATION_EXIST, ''FALSE'') AS NOTIFICATION_EXIST, ISNULL(P.SUPPL_EXIST, ''FALSE'') AS SUPPL_EXIST, NON_DISCREET_ADD, NON_DISCREET_VALID, P.PROBLEM, 
				COMPL_BOUNDARY_AREA,
				CASE (CASE CHARINDEX(''/'', PARCEL_PORTION_NO)  
					WHEN 0 THEN LEN(LTRIM(RTRIM(ISNULL(PARCEL_PORTION_NO,''''))))
					ELSE LEN(LTRIM(RTRIM(ISNULL( SUBSTRING(PARCEL_PORTION_NO,1,CHARINDEX(''/'', PARCEL_PORTION_NO)-1), ''''))))
					END) 
					WHEN 1 THEN CONVERT(VARCHAR, LTRIM(RTRIM(ISNULL(PARCEL_NO,'''')))) + ''  '' +
						    CONVERT(VARCHAR, LTRIM(RTRIM(ISNULL(PARCEL_PORTION_NO, '''')))) 
					WHEN 2 THEN CONVERT(VARCHAR, LTRIM(RTRIM(ISNULL(PARCEL_NO,'''')))) + '' '' +
						    CONVERT(VARCHAR, LTRIM(RTRIM(ISNULL(PARCEL_PORTION_NO, '''')))) 
					ELSE CONVERT(VARCHAR, LTRIM(RTRIM(ISNULL(PARCEL_NO,'''')))) + 
					     CONVERT(VARCHAR, LTRIM(RTRIM(ISNULL(PARCEL_PORTION_NO, '''')))) 
				END AS COMPL_PARCEL_PORTION, PROP_DESCRIPTION AS [DESCRIPTION], 
				CONVERT(VARCHAR, LTRIM(RTRIM(ISNULL(PARCEL_NO,'''')))) +
				CONVERT(VARCHAR, LTRIM(RTRIM(ISNULL(PARCEL_PORTION_NO, '''')))) AS COMPL_PARCEL_PORTION_OLD,
				NUM_KEY, BOUNDARY_AREA, P.ATTRIB_CODE, LIS_KEY, PROVINCE_ID, AUTHORITY_ID, CELL_NO, OWN_NAME,
				TITLE_DEED_NO, PROPERTY_KEY, CURRENT_VALUES, SITE_VALUE, IMPROVED_VALUE, ACTUAL_EXTENT, PROVINCE, AUTHORITY, PROP_ADDRESS, STREET_NO, STREET_NAME,
				EAST_OF, WEST_OF, NORTH_OF, SOUTH_OF, DENSITY, PROP_SOURCE_ID, PROP_CATEGORY_ID, LEGAL_AREA, ACTIVE, PARCEL_CLASS,
				PARCEL_PORTION_NO, PARCEL_STATUS, PARCEL_REMARK, PARCEL_CAPTURED, PARCEL_MODIFIED, PARCEL_NAME, BUILDING_FARM_NAME, 
				SG_DIAGRAM_NO, GP_SUBDIVISION_NO, GENERAL_PLAN_NO, MUNIC_STATUS, PARCEL_TYPE, HISTORY, SUBDIVISION_COMPONENT, CONSOLIDATION_COMPONENT, REG_DATE, 
				(
					SELECT TOP 1 C.PROP_CATEGORY_DESCR
					FROM SDE.PROP_ATTRIB_PATTERN_CATEGORY A
					INNER JOIN SDE.LU_PROP_CATEGORY_NEW C
						  ON C.PROP_CATEGORY_ID = A.CATEGORY_ID
					WHERE SUBSTRING(A.ATTRIB_CODE_PATTERN, 1, 8) = SUBSTRING(P.ATTRIB_CODE, 1, 8)
				) AS PROP_CATEGORY_DESCR
				FROM sde.PROPERTY_SUMMARY P
				WHERE 1=1 --P.ARCHIVE_DATE IS NULL
				'
-- PROP_CATEGORY_DESCR added above by Jacob Jackson 200708 to include category as defined by new legislation

			IF @EXTENSION <> 0
			BEGIN				SET @strSQL = @strSQL  + ' AND P.EXTENSION = ' +  CONVERT(VARCHAR, @EXTENSION)
			END

			IF @BOUNDARY_AREA  <> ''
			BEGIN				SET @strSQL = @strSQL  + ' AND P.BOUNDARY_AREA LIKE ''' + @BOUNDARY_AREA + ''''
			END

			IF @OWNER_NAME  <> ''
			BEGIN				SET @strSQL = @strSQL  + ' AND P.OWN_NAME LIKE ''' + @OWNER_NAME + ''''
			END

			IF @PARCEL_NO <> ''
			BEGIN				SET @strSQL = @strSQL  + ' AND P.PARCEL_NO LIKE ''%' + @PARCEL_NO + '%'''
			END

			IF @LIS_KEY  <> ''
			BEGIN				SET @strSQL = @strSQL  + ' AND P.LIS_KEY LIKE ''' + @LIS_KEY + '%'''
			END

			IF @PARCEL_PORTION_NO  <> ''
			BEGIN				SET @strSQL = @strSQL  + ' AND P.PARCEL_PORTION_NO LIKE ''' + @PARCEL_PORTION_NO + ''''
			END

			IF @CELL_NO <> ''
			BEGIN				SET @strSQL = @strSQL  + ' AND P.CELL_NO = ' +  @CELL_NO
			END

			IF @ATTRIB_CODE = '' OR @ATTRIB_CODE = '__________'
			BEGIN
				SET @strSQL = @strSQL + ' AND (P.ATTRIB_CODE IS NULL OR P.ATTRIB_CODE LIKE ''%'') '
			END
			ELSE
			BEGIN
				SET @strSQL = @strSQL +  ' AND ISNULL(P.ATTRIB_CODE, '''') LIKE '''+  @ATTRIB_CODE + '%'' '
			END

			IF @FUNC_KEY <> '' 
			BEGIN
				SET @strSQL = @strSQL  + ' AND P.FUNC_KEY LIKE ''' + CONVERT(VARCHAR, @FUNC_KEY) + ''''
			END

/*			IF @STREET_NO  <> ''
			BEGIN				SET @strSQL = @strSQL  + ' AND P.PROP_ADDRESS LIKE ''' + CONVERT(VARCHAR, @STREET_NO) + '%'''
			END

			IF @STREET_NAME  <> ''
			BEGIN				SET @strSQL = @strSQL  + ' AND P.PROP_ADDRESS LIKE ''' + CONVERT(VARCHAR, @STREET_NAME) + '%'''
			END
*/
			IF @STREET_NO  <> ''
			BEGIN
				SET @strSQL = @strSQL  + '   AND (P.PROP_ADDRESS LIKE ''' + CONVERT(VARCHAR, @STREET_NO) + '%'' 
								OR P.PROP_ADDRESS LIKE ''%' + CONVERT(VARCHAR, @STREET_NO) + '%'' ) '
			END

			IF @STREET_NAME  <> ''
			BEGIN
				SET @strSQL = @strSQL  + ' AND P.PROP_ADDRESS LIKE ''%' + CONVERT(VARCHAR, @STREET_NAME) + '%'''
			END

			IF @PROVINCE_ID <> 0 
			BEGIN
				SET @strSQL = @strSQL  + ' AND P.PROVINCE_ID = ' + CONVERT(VARCHAR, @PROVINCE_ID)
			END
	
	
			/* CURRENT QUICK FIX FOR GUEST & FINANCE USERS TO PREVENT THEM FROM SEEING PROPERTIES WITHOUT CURRENT_VALUES. TO BE REMOVED AT A LATER DATE*/
			DECLARE @IS_GUEST_FINANCE INTEGER
			SET @IS_GUEST_FINANCE =	(
							SELECT	CASE WHEN LOGIN_NAME IN ('GUEST', 'FINANCE')
									THEN 1
									ELSE 0
									END 
							FROM		SDE.USER_INFO
							WHERE	[USER_ID] = @ACTIVE_USER_ID
							)

			IF ISNULL(@IS_GUEST_FINANCE, 0) <> 0 
			BEGIN
				SET @strSQL = @strSQL  + ' AND P.CURRENT_VALUES IS NOT NULL '
			END
	

			SET @strSQL = @strSQL + ' AND P.ARCHIVE_DATE IS NULL ' + ' ORDER BY	P.COMPL_BOUNDARY_AREA, P.COMPL_PARCEL_PORTION, P.PROPERTY_KEY'

			EXECUTE SP_EXECUTESQL @strSQL

		END
		ELSE -- SPECIFIC RECORD
		BEGIN	
					SELECT 	PP.*, 
					ISNULL(P.NOTIFICATION_EXIST, 'FALSE') AS NOTIFICATION_EXIST, ISNULL(P.SUPPL_EXIST, 'FALSE') AS SUPPL_EXIST, NON_DISCREET_ADD, NON_DISCREET_VALID, P.PROBLEM, 
					PARCEL_NO AS PARCEL_NO, ROLL_REMARK, RATEABLE, FUNC_KEY, PROP_DESCRIPTION AS [DESCRIPTION], 
					EXTENSION, NUM_KEY, BOUNDARY_AREA, P.ATTRIB_CODE, LIS_KEY, PROVINCE_ID, AUTHORITY_ID, CELL_NO, OWN_NAME,
					TITLE_DEED_NO, PROPERTY_KEY, CURRENT_VALUES, SITE_VALUE, IMPROVED_VALUE, IMPROVEMENTS_VALUE,  ACTUAL_EXTENT, PROVINCE, AUTHORITY, PROP_ADDRESS, STREET_NO, STREET_NAME,
					EAST_OF, WEST_OF, NORTH_OF, SOUTH_OF, DENSITY, PROP_SOURCE_ID, PROP_CATEGORY_ID, LEGAL_AREA, ACTIVE, PARCEL_CLASS,
					PARCEL_PORTION_NO, PARCEL_STATUS, PARCEL_REMARK, PARCEL_CAPTURED, PARCEL_MODIFIED, PARCEL_NAME, BUILDING_FARM_NAME, 
					SG_DIAGRAM_NO, GP_SUBDIVISION_NO, GENERAL_PLAN_NO, MUNIC_STATUS, PARCEL_TYPE, HISTORY, SUBDIVISION_COMPONENT, CONSOLIDATION_COMPONENT, REG_DATE, 
					PURCHASE_DATE, PURCHASE_PRICE, LAST_SUPPL_NO, OLD_SUPPL_NO, VALUES_EFFECTIVE, ACTIVE_VAL_PROCESSED_DATE, 

					(
						SELECT TOP 1 C.PROP_CATEGORY_DESCR
						FROM SDE.PROP_ATTRIB_PATTERN_CATEGORY A
					
						INNER JOIN SDE.LU_PROP_CATEGORY_NEW C
							  ON C.PROP_CATEGORY_ID = A.CATEGORY_ID
						WHERE SUBSTRING(A.ATTRIB_CODE_PATTERN, 1, 8) = SUBSTRING(P.ATTRIB_CODE, 1, 8)
					) AS PROP_CATEGORY_DESCR


			FROM    	sde.PROPERTY_SUMMARY P
			INNER JOIN 	SDE.VW_PROPERTY_PROCESSING_PENDING PP ON P.PROPERTY_ID = PP.PROPERTY_ID
			WHERE 	P.PROPERTY_ID = @ID

		END
	END
	ELSE
	BEGIN
		PRINT 'PLEASE SPECIFY AN ACTIVE_USER_ID'
	END


Thank you

Vuyiswa Maseko,

Sorrow is Better than Laughter, it may Sadden your Face, but It sharpens your Understanding

VB.NET/SQL7/2000/2005
http://vuyiswamb.007ihost.com
http://Ecadre.007ihost.com
vuyiswam@tshwane.gov.za


AnswerRe: Help Optimizing the Following SP Pin
J4amieC2-Oct-08 3:11
J4amieC2-Oct-08 3:11 
AnswerRe: Help Optimizing the Following SP Pin
Ashfield2-Oct-08 3:12
Ashfield2-Oct-08 3:12 
AnswerUse SQL Server Management Studio to Optimize SQL statements Pin
David Mujica2-Oct-08 3:13
David Mujica2-Oct-08 3:13 
QuestionCommunication Layer between Application and SQL Server Pin
swjam1-Oct-08 21:55
swjam1-Oct-08 21:55 
AnswerRe: Communication Layer between Application and SQL Server Pin
Mycroft Holmes1-Oct-08 22:43
professionalMycroft Holmes1-Oct-08 22:43 
GeneralRe: Communication Layer between Application and SQL Server Pin
swjam2-Oct-08 0:45
swjam2-Oct-08 0:45 
GeneralRe: Communication Layer between Application and SQL Server Pin
Mycroft Holmes2-Oct-08 1:25
professionalMycroft Holmes2-Oct-08 1:25 
AnswerRe: Communication Layer between Application and SQL Server Pin
Mark Churchill2-Oct-08 5:38
Mark Churchill2-Oct-08 5:38 
QuestionPassing parameters to the auto generated GetBy of the visual studio 2005 auto generated table adapter Pin
Berlus1-Oct-08 19:09
Berlus1-Oct-08 19:09 
QuestionExporting\Importing sql server 2000 data and structure Pin
Berlus1-Oct-08 19:08
Berlus1-Oct-08 19:08 
AnswerRe: Exporting\Importing sql server 2000 data and structure Pin
Mycroft Holmes1-Oct-08 22:47
professionalMycroft Holmes1-Oct-08 22:47 
GeneralRe: Exporting\Importing sql server 2000 data and structure Pin
Ashfield2-Oct-08 0:16
Ashfield2-Oct-08 0:16 
GeneralRe: Exporting\Importing sql server 2000 data and structure Pin
Mycroft Holmes2-Oct-08 0:32
professionalMycroft Holmes2-Oct-08 0:32 
GeneralRe: Exporting\Importing sql server 2000 data and structure Pin
Ashfield2-Oct-08 0:43
Ashfield2-Oct-08 0:43 
AnswerRe: Exporting\Importing sql server 2000 data and structure Pin
Paddy Boyd2-Oct-08 2:35
Paddy Boyd2-Oct-08 2:35 
QuestionReporting against a volatile, high traffic high availability system Pin
J4amieC1-Oct-08 5:36
J4amieC1-Oct-08 5:36 
AnswerRe: Reporting against a volatile, high traffic high availability system Pin
SomeGuyThatIsMe1-Oct-08 11:12
SomeGuyThatIsMe1-Oct-08 11:12 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.