将参数设置到 Microsoft SQL 服务器以设置环境

SET parameters to microsoft SQL server to set environment

我创建了一些 Microsoft SQL 服务器查询以将值插入到我创建的一些表中。 以下是我使用的 sql 个查询。

INSERT INTO dev_data.extract VALUES ('a-dev-extract', '/dev/dev_data/storage/a' ;
INSERT INTO dev_data.extract VALUES ('b-dev-extract', '/dev/dev_data/storage/b' ;
INSERT INTO dev_data.extract VALUES ('c-dev-extract', '/dev/dev_data/storage/c' ;
INSERT INTO dev_data.extract VALUES ('d-dev-extract', '/dev/dev_data/storage/d' ;
INSERT INTO dev_data.extract VALUES ('e-dev-extract', '/dev/dev_data/storage/e' ;
INSERT INTO dev_data.extract VALUES ('f-dev-extract', '/dev/dev_data/storage/f' ;

以上是我用于 dev 环境的一段代码。 prod 而不是 dev 的相同代码应该用于生产。

有什么方法可以参数化 dev 和 prod 来实现这个吗?

例如,让我们进行如下查询:

INSERT INTO dev_data.extract VALUES ('a-dev-extract', '/dev/dev_data/storage/a' ;

prod 的预期输出如下:

INSERT INTO prod_data.extract VALUES ('a-prod-extract', '/prod/prod_data/storage/a' ;

是的,我应该使用记事本查找并用 prod 替换 dev,但最终目的是保留可在不同环境中使用的通用代码。

我试过如下:

DECLARE @env varchar;
SET @env = 'dev';
INSERT INTO @env+_data.extract VALUES ('a-+@env+-extract', '/@env/@env+_data/storage/a' ;

尝试过

SET @env = 'dev'
SELECT 'INSERT INTO ' + @env + '_data.extract VALUES (''a-' + @env + '-extract'',''/' + @env + '/' + @env + '_data/storage/a'')'

正在获取字符串形式的输出,而不是执行查询。 如何执行这个查询部分?我们需要添加一些其他命令而不是 SELECT 吗?

感谢任何线索!

你可以试试这个:

SET @env = 'dev';
SELECT CONCAT("INSERT INTO ", @env, "_data.extract VALUES (", "'a-",@env,"-extract', '/", @env, "/", @env, "_data/storage/a')") FROM DUAL

快照:

更新查询:

DECLARE @env varchar(10) 
DECLARE @qry varchar(200) 
SET @env = 'dev'
SET @qry = 'INSERT INTO ' + @env + '_data.extract VALUES (''a-' + @env + '-extract'',''/' + @env + '/' + @env + '_data/storage/a'')'
EXECUTE(@qry)