存储过程重定向逻辑

时间:2012-01-09 10:39:14

标签: sql sql-server stored-procedures

我们正在开发一个应用程序,有时我们需要一次支持该软件的多个版本。例如Release 1-0-300,1-0-300-With-Test-FunctionalityA,Release 1-0-300-With-Test-FunctionalityB。由于这些要求,我们有时会在不同版本中使用不同名称的相同存储过程,例如

1-0-300 ”使用存储过程“ USP_GetProucts

1-0-300-With-Test-FunctionalityA ”使用存储过程“ USP_GetProucts_FunctionalityA

1-0-300-With-Test-FunctionalityB ”使用存储过程“ USP_GetProucts_FunctionalityB

一些事实

1-为什么我们不使用某些替代解决方案,例如我们可以根据该参数设置参数“WhichStoredProcedureToCall”,我们可以调用所需的存储过程? 因为“USP_GetProucts”可以具有与“USP_GetProucts_FunctionalityA”和“USP_GetProucts_FunctionalityA”完全不同的功能。这些都是巨大的存储过程。

2-我们正在使用SQL2008。

所以我的问题是我们可以实现某种类型的“存储过程重定向”,如果找不到“USP_GetProucts_FunctionalityA”,则获取结果表单“USP_GetProucts”

问候。

2 个答案:

答案 0 :(得分:1)

如果您使用USP_GetProducts作为基本程序,您可以在内部检查,如果存储过程可用:

select name from sys.objects where type = 'P'

然后你可以查看,如果你的程序可用并打电话给它,或者如果没有,可以打电话给不同的人。

答案 1 :(得分:1)

您可以查看某stored procedure是否存在sysobjects table

IF EXISTS(select name from sysobjects where type = 'P' and name = 'tablename')
  BEGIN
     select 1
  END

然后你只需要做出必要的IF


由于您使用的是SQL Server,因此您可以查看SINONYMS

你可以USP_GetProuctsUSP_GetProucts_FunctionalityAUSP_GetProucts_FunctionalityB sinomyns:)