我已经创建了一个存储过程,我希望通过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)
答案 0 :(得分:0)
Select * from dbname..schemaname.tablename