September 21, 2006 at 4:19 pm
declare @cmd varchar(5000)
declare @dbname sysname
declare @login sysname
set @dbname = 'test'
set @login = 'lname'
select @cmd = 'use ' + @dbname + ' declare @uid int, @cmd varchar(500), @name sysname ' +
'if exists (select * from sysusers where sid = suser_sid(''' + @login + ''') and isaliased =0) ' +
'begin select @uid = uid, @name =name from ' +
'sysusers where sid = suser_sid(''' + @login + ''') If exists (select * from sysobjects ' +
'where uid = 1 and name in (select name from sysobjects where uid = @uid)) ' +
'Begin Print '' The following objects are owned by the user in database ' + @dbname + ':'' ' +
'Select convert(varchar(50), name) ''name'', type from sysobjects where uid = @uid ' +
' End '
exec (@cmd)
I get this msg:
Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near 'End'.
how does the quotation markings done when trying to do dynamic sql - when to use single quotes and when double quotes....
Thanks.
September 21, 2006 at 4:25 pm
Not really sure, but have you tried leaving off the the concatenation of 'END' from your dynamic sql?
September 21, 2006 at 4:26 pm
Sorry, missed the begin further inside the code. I am reformatting your code to see what else may be going on.
September 21, 2006 at 4:38 pm
Try this:
select @cmd = 'use ' + @dbname + '; declare @uid int, @cmd varchar(500), @name sysname ' +
'if exists (select * from dbo.sysusers where sid = suser_sid(''' + @login + ''') and isaliased = 0) ' +
'begin select @uid = uid, @name = name from dbo.sysusers where sid = suser_sid(''' + @login + ''')' +
' If exists (select * from dbo.sysobjects ' +
'where uid = 1 and name in (select name from dbo.sysobjects where uid = @uid)) ' +
'Begin Print '' The following objects are owned by the user in database ' + @dbname + ':'' ' +
'Select convert(varchar(50), name) ''name'', type from dbo.sysobjects where uid = @uid ' +
' End End'
print @cmd
exec (@cmd)
Viewing 4 posts - 1 through 4 (of 4 total)
You must be logged in to reply to this topic. Login to reply