Wrox Programmer Forums
Go Back   Wrox Programmer Forums > SQL Server > SQL Server 2005 > SQL Server 2005
|
SQL Server 2005 General discussion of SQL Server *2005* version only.
Welcome to the p2p.wrox.com Forums.

You are currently viewing the SQL Server 2005 section of the Wrox Programmer to Programmer discussions. This is a community of software programmers and website developers including Wrox book authors and readers. New member registration was closed in 2019. New posts were shut off and the site was archived into this static format as of October 1, 2020. If you require technical support for a Wrox book please contact http://hub.wiley.com
 
Old April 25th, 2007, 08:03 PM
Registered User
 
Join Date: Dec 2006
Posts: 8
Thanks: 0
Thanked 0 Times in 0 Posts
Default How to use CTE instead of temp table

I am trying to use CTE (Common Table Expressions) instead of Temporary tables. First constraint I felt was we need to SELECT that CTE out as soon as we create it. The second constraint is, it says CTE as invalid after certain points (or batches ) on the code. It will be great if you can give a workaround. This is my procedure.

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

alter PROC [dbo].[spDL_Menu_get_temp]
        @user_id VARCHAR(2000) ,
        @request_root VARCHAR(255) ,
        @request_query_string VARCHAR(255)
    AS

/*


*/

DECLARE @query_string_local AS VARCHAR(255)

SET @query_string_local =
        CASE WHEN (LTRIM(RTRIM(@request_query_string)) = '') THEN '?'
            WHEN (LTRIM(RTRIM(@request_query_string)) <> '') THEN ('?' + @request_query_string)
        END
;

----------------------------------------------------------------------------------------------------------------------------------------
WITH TBL_MENUS( TABLE_ID , MENU_ID , MENU_NAME , MENU_LEVEL , MENU_ID_PARENT , MENU_LEVEL_INDEX, URL_TARGET) AS
    (
        SELECT MEN.table_id ,
                MEN.menu_id ,
                MEN.menu_name ,
                MEN.menu_level ,
                MEN.menu_id_parent ,
                MEN.menu_level_index ,
-- (@request_root + url_target + '?' + @request_query_string ) AS url_target
                REPLACE( (@request_root + url_target + @query_string_local + ISNULL(query_string,'')) , '??','?') AS url_target
            FROM DL_Menu AS MEN
                JOIN DL_MENU_PERMISSIONS PER ON MEN.menu_id = PER.menu_id
                JOIN DL_USER USR ON USR.USERID = @user_id AND PER.role_id = USR.role

    )

 SELECT TOP 1 MENU_ID FROM TBL_MENUS ;


WITH TBL_ROLES( ROLE ) AS
    (
        SELECT ROL.ROLE_DESC AS ROLE FROM DL_USER USR
            LEFT OUTER JOIN DL_USERROLE ROL ON USR.ROLE = ROL.ROLE_ID
            WHERE USERID = @USER_ID
    )

-- select * from dl_userrole
 SELECT MEN.MENU_ID , ROL.ROLE FROM TBL_ROLES ROL , TBL_MENUS MEN
 SELECT top 1 role FROM TBL_ROLES

------------------------------------------------------------------------------------------------------------------------------------------
DECLARE @MENU_LEVEL_INDEX AS TINYINT
--SELECT @MENU_LEVEL_INDEX = MAX(MENU_LEVEL_INDEX) FROM TBL_MENUS WHERE MENU_LEVEL = 1
SELECT @MENU_LEVEL_INDEX
SET @MENU_LEVEL_INDEX = @MENU_LEVEL_INDEX + 1


---------------------------------------------------------------------------------------------------------------------------------------
SELECT TABLE_ID , MENU_ID , MENU_NAME , MENU_LEVEL , MENU_ID_PARENT , MENU_LEVEL_INDEX, URL_TARGET FROM TBL_MENUS
---------------------------------------------------------------------------------------------------------------------------------------
    UNION
        SELECT 'Roles', 'Roles' , 'My Roles' , 1 , NULL , @MENU_LEVEL_INDEX ,
                                    REPLACE( (@request_root + url_target + @query_string_local + ISNULL(query_string,'')) , '??','?') AS url_target
---------------------------------------------------------------------------------------------------------------------------------------
        UNION
        SELECT ROL.ROLE , ROL.ROL , ROL.ROLE , 2 , 'Roles' , ROL.ROL ,
            (REPLACE( (@request_root + url_target + @query_string_local + ISNULL(query_string,'')) , '??','?') + '?dbrole=' + ROL.ROLE) AS url_target
-------------------------------------------------------------------------------------------
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO










Similar Threads
Thread Thread Starter Forum Replies Last Post
temp table in query abdusalam Access 5 January 9th, 2008 09:28 AM
TEMP TABLE TO REAL TABLE pallone SQL Server 2000 2 June 15th, 2007 07:50 AM
Copy whole structure of table in #temp table maulik77 SQL Server 2000 2 December 21st, 2006 02:42 AM
global temp table vs.permanent table use sofya SQL Server 2000 0 December 17th, 2004 01:57 PM
Using Temp Table and dataset Bhavin Crystal Reports 0 September 14th, 2004 08:39 AM





Powered by vBulletin®
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Copyright (c) 2020 John Wiley & Sons, Inc.