[英]In SQL, how can I select a row from a table with a particular frequency e.g. frequency = 2 or, frequency = 4?
[英]Can I SELECT*FROM a parameter (e.g. @tableName)
我正在嘗試優化存儲過程並減少任何冗余代碼。 現在有很多代碼是基於@schema
參數復制的。 @Schema
可以是測試環境,也可以是生產環境。
非常簡單的例子:
IF @schema = ’test’ BEGIN
SELECT*FROM test.dbo.test_results
END ELSE IF @schema = ‘prod’ BEGIN
SELECT*FROM final.dbo.final_results END;
看,相同的代碼,唯一的區別是表名。 除了我的項目中的代碼有數百行重復的代碼,唯一的區別是表名。
因此,我可以將參數設置為@tableName
嗎?我可以在其中創建以下 case 語句?:
IF @schema = ‘test’ BEGIN
SET @tableName = ‘test.dbo.test_results’
END ELSE IF @schema = ‘prod’ BEGIN
SET @tableName = ‘final.dbo.final_results’
然后有以下代碼:
SELECT*FROM @tableName
如果沒有,還有其他推薦嗎?
SQL 服務器不支持宏替換,但可以不用動態 SQL。
這些表必須具有相同的結構,並且要清楚...我不確定這樣做是否明智。
Declare @Schema varchar(50) = 'Prod'
Select * From [test].[dbo].[test_results] Where @Schema = 'Test'
Union All
Select * From [final].[dbo].[final_results] Where @Schema = 'Prod'
我想我會使用不同的數據庫,特別是如果有很多(你說的數百個)。
然后切換連接字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.