I have a string which has database name,Schema name and Procdedure name which is
‘manged.dbo.gen_scri’
I am trying to extract database name,Schema name and Procdedure name from it so I wrote a query like this:
DECLARE @Name VARCHAR(1000)= 'manged.dbo.gen_scri',
@DB VARCHAR(100),
@Schema VARCHAR(100),
@Proc_Name VARCHAR(max)
SELECT @DB=SUBSTRING(@Name,1,CHARINDEX('.',@Name)-1)
SELECT @Schema=SUBSTRING(@Name,(CHARINDEX('.',@Name))+1,CHARINDEX('.',@Name,(LEN(@DB))+2)-((CHARINDEX('.',@Name))+1))
SELECT @Proc_Name=SUBSTRING(@Name,LEN(@DB)+LEN(@Schema)+3,100)
SELECT @DB AS Database_Name,@Schema AS SchemaName,@Proc_Name AS Proc_Name
Is there a better way of doing it?
The answer is
PARSENAME(full_object_name, part)function wherepartcan be: 1 => object name, 2 => schema, 3 => database name, 4 => server name: