declare @name sysname
declare @SQL nvarchar(600)
declare c1 cursor for
select name from sysdatabases where name like 'AIS%'
open c1
fetch c1 into @name while @@fetch_status >= 0
begin
select @SQL = 'select '+@name+', FAccountID, FName from '+ @name+'.dbo.t_account'
execute (@SQL)
fetch c1 into @name
end
deallocate c1
报错
务器: 消息 207,级别 16,状态 3,行 1
列名 'AIS20050121105158' 无效。
服务器: 消息 207,级别 16,状态 3,行 1
列名 'AIS20051014110842' 无效。
服务器: 消息 207,级别 16,状态 3,行 1
列名 'AIS20060224165630' 无效。
服务器: 消息 207,级别 16,状态 3,行 1
列名 'AIS20060712101417' 无效。
服务器: 消息 207,级别 16,状态 3,行 1
列名 'AIS20070105090554' 无效。
服务器: 消息 207,级别 16,状态 3,行 1
列名 'AIS20080508142515' 无效。
服务器: 消息 207,级别 16,状态 3,行 1
列名 'AIS20090107135859' 无效。
我想把变量@name的值作为一列来显示
declare @SQL nvarchar(600)
declare c1 cursor for
select name from sysdatabases where name like 'AIS%'
open c1
fetch c1 into @name while @@fetch_status >= 0
begin
select @SQL = 'select '+@name+', FAccountID, FName from '+ @name+'.dbo.t_account'
execute (@SQL)
fetch c1 into @name
end
deallocate c1
报错
务器: 消息 207,级别 16,状态 3,行 1
列名 'AIS20050121105158' 无效。
服务器: 消息 207,级别 16,状态 3,行 1
列名 'AIS20051014110842' 无效。
服务器: 消息 207,级别 16,状态 3,行 1
列名 'AIS20060224165630' 无效。
服务器: 消息 207,级别 16,状态 3,行 1
列名 'AIS20060712101417' 无效。
服务器: 消息 207,级别 16,状态 3,行 1
列名 'AIS20070105090554' 无效。
服务器: 消息 207,级别 16,状态 3,行 1
列名 'AIS20080508142515' 无效。
服务器: 消息 207,级别 16,状态 3,行 1
列名 'AIS20090107135859' 无效。
我想把变量@name的值作为一列来显示
select @SQL = 'select '+@name+' as newcol, FAccountID, FName from '+ @name+'.dbo.t_account'
select @SQL = 'select '''+@name+''' as newcol, FAccountID, FName from '+ @name+'.dbo.t_account'
DECLARE @SQLString NVARCHAR(500);--存储拼出来的SQL
DECLARE @ParmDefinition NVARCHAR(500);---存储拼出来的SQL中的参数
/* Build the SQL string one time. */
SET @SQLString =
N'SELECT * FROM AdventureWorks.Sales.Store WHERE SalesPersonID = @SalesID';
/* Specify the parameter format one time. */
SET @ParmDefinition = N'@SalesID int';--赋值/* Execute the string with the first parameter value. */
SET @IntVariable = 275;--赋值
EXECUTE dbo.sp_executesql @SQLString, @ParmDefinition,
@SalesID = @IntVariable;
/* Execute the same string with the second parameter value. */
SET @IntVariable = 276;
EXECUTE dbo.sp_executesql @SQLString, @ParmDefinition,
@SalesID = @IntVariable;
有列名 AIS20050121105158?
select @SQL = 'select ['+@name+'], FAccountID, FName from ['+ @name+'].dbo.t_account'