我们正在开发一个应用程序,有时我们需要一次支持该软件的多个版本。例如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”
问候。
答案 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_GetProucts
,USP_GetProucts_FunctionalityA
和USP_GetProucts_FunctionalityB
sinomyns:)