【发布时间】:2020-12-25 22:37:45
【问题描述】:
我创建了一些 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' ;
是的,我可以使用记事本查找 dev 并将其替换为 prod,但最终目的是保留可在不同环境中使用的通用代码。
我试过如下:
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 我们还需要添加其他命令吗?
感谢任何潜在客户!
【问题讨论】:
标签: sql sql-server parameter-passing