USP_QUERY_CREATEORUPDATEVIEW

Parameters

Parameter Parameter Type Mode Description
@QUERYID uniqueidentifier IN
@SQL nvarchar(max) IN

Definition

Copy



create procedure [dbo].[USP_QUERY_CREATEORUPDATEVIEW]
    @QUERYID uniqueidentifier,
    @SQL [nvarchar](max)

with execute as owner
as

set nocount on

declare @FormattedQueryID nvarchar(36)
declare @ViewName as nvarchar(128)
declare @CreateViewSQL as nvarchar(max)
declare @OBJID as integer

set @FormattedQueryID = replace(cast(@QUERYID as nvarchar(36)), '-', '_')
set @ViewName = 'V_QUERY_' + @FormattedQueryID

select @OBJID = id from dbo.sysobjects where id = object_id(N'[dbo].[' + @ViewName + ' ]') and type in (N'V')

if not @OBJID is null
    -- view already exists so use alter
    set @CreateViewSQL = 'alter VIEW [' + @ViewName + ']'
else
    set @CreateViewSQL = 'create VIEW [' + @ViewName + ']'

set @CreateViewSQL = @CreateViewSQL + ' as
    ' + @SQL

-- execute the sql to create or alter the view 
exec (@CreateViewSQL)

if @@error <> 0 return 1;

-- grant rights for new views
if @OBJID is null
    exec ('grant select on [' + @ViewName + '] to BBAPPFXSERVICEROLE')

return 0;