【问题标题】:SET parameters to microsoft SQL server to set environment将参数设置到 Microsoft SQL 服务器以设置环境
【发布时间】: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


    【解决方案1】:

    你可以试试这个:

    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)
    

    【讨论】:

    • 这不起作用,因为它会引发错误Invalid object name 'DUAL'
    • 问题已更新为我在尝试此代码时获得的屏幕截图!
    • 我正在使用 MySQL(根据问题),看起来您正在 SQL Server 中尝试!
    • 对不起我的错误!更新了问题!
    • 我得到的输出是一个字符串,如何执行这个查询?
    猜你喜欢
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多