Click here to Skip to main content
15,887,746 members
Home / Discussions / Database
   

Database

 
GeneralRe: Any shorter way to total this? Pin
Muammar©15-Apr-09 0:44
Muammar©15-Apr-09 0:44 
AnswerRe: Any shorter way to total this? [modified] Pin
Eddy Vluggen15-Apr-09 2:50
professionalEddy Vluggen15-Apr-09 2:50 
GeneralRe: Any shorter way to total this? Pin
Muammar©15-Apr-09 10:36
Muammar©15-Apr-09 10:36 
AnswerRe: Any shorter way to total this? Pin
Mycroft Holmes15-Apr-09 1:21
professionalMycroft Holmes15-Apr-09 1:21 
GeneralRe: Any shorter way to total this? Pin
Muammar©15-Apr-09 10:30
Muammar©15-Apr-09 10:30 
AnswerRe: Any shorter way to total this? Pin
i.j.russell15-Apr-09 9:06
i.j.russell15-Apr-09 9:06 
GeneralRe: Any shorter way to total this? Pin
Muammar©15-Apr-09 10:30
Muammar©15-Apr-09 10:30 
QuestionRewrite recursive proc so we can do this in UDF instead? (and more efficient) Pin
devvvy14-Apr-09 18:02
devvvy14-Apr-09 18:02 
hello - I bang my head against the wall trying to rewrite this recursive TSQL proc so we can do this in UDF instead? (and more efficient and to be able to bind it to view column... etc)
<br />
CREATE PROCEDURE spRecursiveGetChildren <br />
(<br />
    @ObjectId bigint, <br />
    @ObjectClassifier varchar(255),<br />
    @TempId varchar(36)<br />
)<br />
AS<br />
BEGIN<br />
	DECLARE @CursorName varchar(100)<br />
	DECLARE @SQL varchar(4000)<br />
	DECLARE @NSQL nvarchar(4000)<br />
	<br />
	-- Dynamic sql + cursor name because there'll be a recursive call and we'd run into CURSOR name conflict<br />
	SET @CursorName = ''spGetChildren_cursor_'' + CAST(@ObjectId as varchar(20)) + ''_'' + REPLACE(CAST(@ObjectClassifier AS varchar(70)), ''.'', ''_'')<br />
	<br />
	PRINT @CursorName<br />
						<br />
	INSERT INTO [dbo].[TMP_HierarchyMap] <br />
		(<br />
		ParentId,<br />
		ChildId,<br />
		ParentType,<br />
		ChildType,<br />
		...<br />
		TmpUID,<br />
		ReferencedId<br />
		)<br />
		SELECT <br />
            ParentId,<br />
            ChildId,<br />
            ParentType,<br />
            ChildType,<br />
            ...<br />
            @TempId,<br />
            Id<br />
            FROM HIERARCHYMAP M1<br />
            WHERE<br />
            ParentId = @ObjectId<br />
            AND<br />
            ParentType = @ObjectClassifier<br />
			AND<br />
			NOT EXISTS(SELECT 1 FROM TMP_HIERARCHYMAP M2 WHERE M1.ChildId=M2.ChildId AND M1.ChildType=M2.ChildType AND ParentId=@ObjectId AND ParentType=@ObjectClassifier AND TmpUID=@TempId)<br />
	<br />
	SET @SQL = <br />
		   ''DECLARE @ThisChildId bigint<br />
			DECLARE @ThisChildType varchar(255)<br />
			DECLARE @CountChildren int<br />
			<br />
		    DECLARE $CURSOR_NAME$ CURSOR FOR <br />
			SELECT ChildId,ChildType <br />
			FROM HIERARCHYMAP <br />
			WHERE  <br />
				ParentId = $OBJECTID$<br />
				AND ParentType = ''''$OBJECTCLASSIFIER$''''<br />
				<br />
				OPEN $CURSOR_NAME$<br />
				FETCH $CURSOR_NAME$ INTO @ThisChildId, @ThisChildType<br />
					<br />
				WHILE @@FETCH_STATUS = 0<br />
				BEGIN		<br />
					<br />
					SELECT @CountChildren = count(1) FROM HIERARCHYMAP WHERE ParentId = @ThisChildId AND ChildType = @ThisChildType<br />
					IF (@CountChildren>0)<br />
						BEGIN<br />
						<br />
						-- ** Recursive call<br />
						EXEC spRecursiveGetChildren @ThisChildId, @ThisChildType, ''''$TEMPID$''''<br />
						END<br />
					FETCH $CURSOR_NAME$ INTO @ThisChildId, @ThisChildType<br />
   				END<br />
					<br />
				CLOSE $CURSOR_NAME$<br />
				DEALLOCATE $CURSOR_NAME$<br />
				''<br />
		SET @SQL = REPLACE(@SQL, ''$CURSOR_NAME$'', @CursorName)<br />
		SET @SQL = REPLACE(@SQL, ''$OBJECTID$'', CAST(@ObjectId as varchar(20)) )<br />
		SET @SQL = REPLACE(@SQL, ''$OBJECTCLASSIFIER$'', CAST(@ObjectClassifier as varchar(70)) )<br />
		SET @SQL = REPLACE(@SQL, ''$TEMPID$'', CAST(@TempId as varchar(36)) )<br />
		<br />
		SET @NSQL = CAST(@SQL AS nvarchar(4000))<br />
		<br />
		PRINT @NSQL<br />
		<br />
		-- Actually executing recursive call! This prevents me from repackage this as UDF instead.<br />
		EXEC sp_executesql @NSQL<br />
END<br />


dev

AnswerRe: Rewrite recursive proc so we can do this in UDF instead? (and more efficient) Pin
Ashfield14-Apr-09 21:00
Ashfield14-Apr-09 21:00 
GeneralGot recursive CTE sql but... two more questions. Pin
devvvy15-Apr-09 0:07
devvvy15-Apr-09 0:07 
GeneralRe: Got recursive CTE sql but... two more questions. Pin
Giorgi Dalakishvili15-Apr-09 1:13
mentorGiorgi Dalakishvili15-Apr-09 1:13 
GeneralRe: Got recursive CTE sql but... two more questions. Pin
i.j.russell15-Apr-09 9:10
i.j.russell15-Apr-09 9:10 
GeneralRe: Got recursive CTE sql but... two more questions. Pin
devvvy15-Apr-09 13:25
devvvy15-Apr-09 13:25 
QuestionTABLE VALUE FUNCTION for MySQL? Pin
devvvy14-Apr-09 16:20
devvvy14-Apr-09 16:20 
QuestionFile logging. Pin
Ivan200914-Apr-09 8:50
Ivan200914-Apr-09 8:50 
AnswerRe: File logging. Pin
Ashfield14-Apr-09 21:03
Ashfield14-Apr-09 21:03 
GeneralRe: File logging. Pin
Ivan200915-Apr-09 6:09
Ivan200915-Apr-09 6:09 
QuestionQuery Pin
CodingYoshi14-Apr-09 6:23
CodingYoshi14-Apr-09 6:23 
AnswerRe: Query Pin
Eddy Vluggen14-Apr-09 10:10
professionalEddy Vluggen14-Apr-09 10:10 
Questiondatacolumn boxing Pin
Maverickcool13-Apr-09 22:02
Maverickcool13-Apr-09 22:02 
AnswerRe: datacolumn boxing Pin
Mycroft Holmes14-Apr-09 17:05
professionalMycroft Holmes14-Apr-09 17:05 
GeneralRe: datacolumn boxing Pin
Maverickcool14-Apr-09 23:55
Maverickcool14-Apr-09 23:55 
GeneralRe: datacolumn boxing Pin
Mycroft Holmes15-Apr-09 1:18
professionalMycroft Holmes15-Apr-09 1:18 
AnswerRe: datacolumn boxing Pin
jai_10124-Apr-09 21:49
jai_10124-Apr-09 21:49 
Questionmultiline dynamic tsql - recognize line break? Pin
devvvy13-Apr-09 20:22
devvvy13-Apr-09 20:22 

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.