将参数设置到 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)
我创建了一些 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)