问题标签 [sql-scripts]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 执行参数化的 .sql 命令
我们在 .sql 文件中有一个 SQL 脚本。它有几个像这样定义的参数
然后我们在 .bat 脚本中执行这个脚本:
作为我们配置工具的一部分,我被分配了实现此功能的任务,即创建物理 db 文件并将其附加到数据库。稍后,我们还将包括当前在单独的 .sql 脚本中定义的数据库表、存储过程等的创建。
理想情况下,我希望配置工具不依赖于 sqlcmd,而是在进程中执行脚本(例如,通过使用 SqlCommand)。这将允许我使用标准错误处理(异常)而不是解析 sqlcmd 的输出。
现在我有点不确定如何解决这个问题。我希望能够重用我们现有的 sql 脚本,以便我们仍然可以使用我们的 .bat 脚本,而无需维护执行相同任务的两个不同的 sql 查询。
其中一个脚本在几个地方包含 GO。我的理解是 SqlCommand 不允许这样做。我也不确定是否可以使用 SqlParameter 来设置 $(CONFIG_DBPATH) 等的值(实际上我几乎可以肯定我不能)。
所以我的问题是,解决这种情况的推荐方法是什么?如何执行带有 GO 的 .sql 命令,以及如何指定变量以便可以从 .bat 文件和托管代码中使用脚本?我想一种选择是在从代码执行脚本时“清洗”脚本,删除 GO 等,并修改变量的处理方式。但是有没有更好的选择?
sql - 如何将复合键列类型从 varchar 更改为 nvarchar?
我需要将所有 varchar 列更改为 nvarchar 类型。我已经在此线程SQL Server 的帮助下生成了一个脚本 - 如果还没有 nvarchar ,则该脚本将数据库列从 varchar 更新为 nvarchar。
但是,此脚本无法更改复合主键列。我们的表中有许多复合键,因此无法手动完成。
有没有办法编写从 varchar 复合键到 nvarchar 的更改?
sql - 从 SQL Server 查询优化器生成多个脚本
我环顾四周,但找不到这个问题的答案,所以我想我会问。所以我正在对几个长存储过程使用 SQL Server 查询优化器。优化器完成后,会收到很多创建统计信息和索引的建议,但它一次显示在一行上。
有没有办法一次创建所有脚本?然后我复制必须单击每一行来创建我的脚本,然后复制到剪贴板,然后执行每一个
sql - 查询帮助:合计父/子项
[编。注意:与此 SO 问题相关;没有编辑问题,因为问题已经从根本上发生了变化,并且之前的问题/答案仍然有效]
寻找有关如何最好地创建视图的建议。我之前的问题中的当前查询现在可以工作,但没有考虑到父/子项目的想法。
相关数据结构
目标
用外行的话来说,我让某人输入一个工单编号,然后提取一份包含工单信息的报告,以及所有子工单(也称为任务工单)的人工和材料成本摘要
因此,我需要一个返回的视图:
- 有关该工作订单的标准信息(由 WONUM 标识)——描述、位置等。
- 每个子任务工单的总工时 (SUM of LABORHRS)
- 来自 WPLABOR 的每个子任务工单的总人工成本(LABORHRS*RATE 的总和)
- 来自 WPITEM 的总项目成本(ITEMQTY*UNITCOST 的总和)对于它的每个子任务工单
子任务工单是一个工单,其中父级 = 第一个工单的 WONUM 且 ISTASK=1
采用:
我希望能够通过以下方式调用它:
我知道这涉及子查询和连接的组合,我只是不确定构建关系等的最佳方式是什么。
当前查询
当前查询的问题
因为它不考虑子任务工单,所以它不返回任何人工或项目记录(没有与父级直接关联),因此人工和项目总计始终为空。
sql - 记录 SQL 脚本错误
我有一个带有以下命令的 postgres 文件的 SQL 脚本。
我想处理这个命令的错误(记录错误)
例子
错误:重复键值违反。
该COPY
命令是否返回任何值?如果没有,那么如何记录 shell 脚本的输出?
sql-server-2005 - 列名“XXXXXXXXX”无效
我有一个 sql 脚本说“abc.sql”,我使用 sqlcmd 从批处理文件中调用它
调用批处理脚本
/li>批量
/li>
然后像这样调用SQL脚本
在 SQL 脚本中
/li>
但是当我调用批处理脚本“无效的列名'XXXXXXXX'”时,这给出了错误
其中“XXXXXXX”是 var1 的值。我做错了什么。任何的想法。
同样,即使标量变量 @node 和 @serv 已声明并设置...我收到一条错误消息Must declare the scalar variable "@node"
oracle - 如何创建 oracle sql 脚本假脱机文件
我有一个关于假脱机程序结果的问题。我的示例 sql 脚本如下所示。
上面的脚本不起作用,但我想做这样的事情,在开始结束块中我们计算一些值,我想假脱机这些结果。
谢谢。
sql - 在一个脚本中创建 SQL Server 表和存储过程?
我有一个 SQL 脚本,它使用它们的键和约束设置两个数据库表,没有任何问题。我不会包含整个代码,但它的“骨架”看起来像这样:
不过,我一直在尝试将存储过程添加到该脚本中,理想情况下,我希望将其全部包含在同一个脚本中。有人可以告诉我如何将以下存储过程包含到上述脚本中吗?
我已经尝试将它放在脚本的末尾,并且也尝试过使用和不使用 BEGIN、END 和 GO 标记,但我不断收到错误消息,提示“PROCEDURE 附近的语法不正确”。
sql - 如何使用批处理文件运行多个 SQL 脚本?
我有一个案例,我有 10+ SQL script
。
我不想一个接一个地运行我的所有脚本。
有没有一种方法可以让我在SQL Management studio
.
我找到了这篇文章。创建批处理文件似乎更容易。
这就是你所需要的:
替换 servername 和 databasename,但它似乎不起作用。
有任何想法吗?
sql - 有条件地将列数据类型从浮点数转换为双精度
我重新设计了基于 Firebird 的 SQL 数据库。作为此过程的一部分,我创建了名为 HARMONICS 的新表。使用基于 GUI 的管理工具,我创建了以下列:
之后,我在新实体中插入了一些测试数据。这些更改还包括其他表格,但这些与我的问题无关,因此我不会在此处列出。然后我定制了我的应用程序以使用关系数据库的新结构。
当应用程序经过全面测试后,我增强了名为 Upgrader 的实用程序。Upgrader 的任务是在不同版本的 SQL 数据库之间进行转换。为了完成这项任务,我编写了 SQL 脚本。按照官方 Firebird 网站 ( http://firebirdsql.org/manual/migration-mssql-data-types.html ) 上的错误指南,我编写了以下命令来创建上述表格:
我认为 Firebird 数据类型“Float”是双精度浮点数(与 C 中的数据类型“double”相同)。我最终发现我错了,但这是在我创建了 Upgrader 实用程序的正式版本之后。所以现在我有两个版本的数据库在流通——一个是单精度浮点数,第二个是双精度浮点数。
我正在搜索可以检查表 HARMONICS 中列的实际数据类型的 SQL 脚本。如果这是双精度,那么脚本将什么也不做。如果这是单精度,脚本会将数据类型为“浮点”的列转换为“双精度”,同时保留所有现有数据。关键是脚本在任何一种情况下都不会返回错误。这可能吗?如果是,那怎么办?