Sql server 从StoredProcess中的另一个数据库中选择数据
我尝试在StoredProcess中从另一个数据库的表中选择数据,另一个数据库的名称由参数给出。我收到一条错误消息: '无效的对象名[@DbName].dbo.Setup'Sql server 从StoredProcess中的另一个数据库中选择数据,sql-server,stored-procedures,Sql Server,Stored Procedures,我尝试在StoredProcess中从另一个数据库的表中选择数据,另一个数据库的名称由参数给出。我收到一条错误消息: '无效的对象名[@DbName].dbo.Setup' 有人能帮我解决这个问题吗?就像@ThomasSchremser说的: DECLARE @sqlquery varchar(1000) SET @sqlquery = '(SELECT COALESCE(Text, ''ToDoListeDatum'') AS SortField FROM ['+@DbName+'].dbo.
有人能帮我解决这个问题吗?就像@ThomasSchremser说的:
DECLARE @sqlquery varchar(1000)
SET @sqlquery = '(SELECT COALESCE(Text, ''ToDoListeDatum'') AS SortField FROM ['+@DbName+'].dbo.Setup WHERE label like ''ComboBoxSetupBatchReihenfolge'')'
由您决定如何使用结果填充表/变量
或使用:
insert into @table(column) exec @sqlquery...
或
您需要使用动态查询,如下所示
CREATE PROCEDURE [dbo].[spUndeliverableOrders]
@DbName sysname
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @Str varchar(max)
CREATE TABLE #Result(Res VARCHAR(MAX))
SET @Str = 'insert into #Result SELECT TOP 1 COALESCE(Text, ''ToDoListeDatum'') AS SortField FROM ['+@DbName+'].dbo.Setup WHERE label like ''ComboBoxSetupBatchReihenfolge'''
exec(@str)
select Res from #Result
END
根据脚本修改:
DECLARE @Str varchar(max)
CREATE TABLE #Result(Res VARCHAR(MAX))
SET @Str = ' SELECT TOP 1 COALESCE(Text, ''ToDoListeDatum'') AS SortField FROM ['+@DbName+'].dbo.Setup WHERE label like ''ComboBoxSetupBatchReihenfolge'''
insert into #Result
EXEC(@Str)
这里必须使用动态SQL
CREATE PROCEDURE [dbo].[spUndeliverableOrders]
@DbName sysname
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @Str varchar(max)
CREATE TABLE #Result(Res VARCHAR(MAX))
SET @Str = 'insert into #Result SELECT TOP 1 COALESCE(Text, ''ToDoListeDatum'') AS SortField FROM ['+@DbName+'].dbo.Setup WHERE label like ''ComboBoxSetupBatchReihenfolge'''
exec(@str)
select Res from #Result
END
DECLARE @Str varchar(max)
CREATE TABLE #Result(Res VARCHAR(MAX))
SET @Str = ' SELECT TOP 1 COALESCE(Text, ''ToDoListeDatum'') AS SortField FROM ['+@DbName+'].dbo.Setup WHERE label like ''ComboBoxSetupBatchReihenfolge'''
insert into #Result
EXEC(@Str)