在SQL存储过程中动态使用“USE [Database]”语句

时间:2016-01-22 16:51:03

标签: sql-server stored-procedures

我已经创建了一个存储过程,我希望通过USE命令传递@DB。我知道我可以使用DB的名称动态定义表的正确路径(例如......'+ @DB +'。dbo.tAnalysisResult')但是我在同一个数据库中有多个表连接,因此我我想在开头只定义一次DB。 任何帮助将受到高度赞赏。在我的查询下面,目前不起作用:

USE [DB_Research]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].sp_test1 @DB VARCHAR(300), @OUTCOME INT OUTPUT
AS

SET NOCOUNT ON

EXECUTE ('USE' + @DB)

BEGIN TRY
SELECT @OUTCOME = (select SUM(ResultSID) from tAnalysisResult)

END TRY BEGIN CATCH

-- If error encountered, display it
SELECT @OUTCOME = '0, line: ' + CAST(ERROR_LINE() AS VARCHAR(MAX)) + ', msg:' + ERROR_MESSAGE()

END CATCH
SET NOCOUNT OFF

-- Execute the stored procedure
declare @OUTCOME INT
exec sp_test1  'Loss_DB', @OUTCOME OUTPUT
Print(@OUTCOME)

1 个答案:

答案 0 :(得分:0)

Select * from dbname..schemaname.tablename