问题标签 [stored-procedures]
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.
php - 准备好的语句与存储过程
如果您使用的是 php5 和 mysql5,那么使用存储过程相对于准备好的语句有很大的优势吗?(我在某处读到你可能无法从 mysql5 存储过程中获得实质性的性能提升)
sql - 如何确定工作的状态?
我有一个安排工作的存储过程。这项工作需要很长时间才能完成(大约 30 到 40 分钟)。我需要了解这个 Job 的状态。以下详细信息将对我有所帮助
1) 如何查看已安排在未来某个时间但尚未开始的所有作业的列表
2) 如何查看正在运行的作业列表以及它们运行的时间跨度
3) 如何查看作业是否已成功完成或因任何错误而在其间停止。
c# - C#-SQL:如何执行一批StoredProcedure?
编辑:
我的问题不再是问题了:我重做了我的性能测试,我犯了一个致命的愚蠢错误:我忘记了 x1000 从毫秒中获取秒数:/ 对不起那些家伙。
有关信息:
- 我每秒从我的 PC 到本地网络上的数据库服务器进行大约 1900 次更新。
- 如果程序与 DB 在同一台机器上,则每秒更新 3.200 次。
- 每秒 3.500 次从我的 PC 上的数据库服务器更新我不重新创建和重新打开新的 SQLConnection。
- 每秒 5.800 次更新,带有批处理文本。对于我的 10.000 行,如果需要 5 秒,我的程序就可以了。很抱歉让您担心了。
实际上,我使用 SQL 存储过程在我的数据库中创建一行以避免 SQL 注入。在 C# 中,我有以下方法:
当我要插入一两行时,它会很棒。但如果我需要创建 1.000 个用户、10.000 个产品和 5000 个宠物,这不是最好的解决方案:我将在网络传输中浪费大量时间。
我相信,如果不检查它,我可以只使用有限数量的回调。所以我不想调用 10.000 次:
另一种方法是创建批处理文本,但存在 SQL 注入风险(而且很丑陋)。
.Net 中是否有管理它的“SqlCommandList”对象?如何在数据库中进行大量写入?那有什么好的模式呢?
sql - SQL Server 中的自定义日期/时间格式
我正在尝试编写一个存储过程,它从表中选择列并将 2 个额外的列添加到 ResultSet。这 2 个额外的列是对表中的字段进行转换的结果,该字段是日期时间字段。
日期时间格式字段具有以下格式 'YYYY-MM-DD HH:MM:SS.S'
应采用以下格式的 2 个附加字段:
- DDMMM
- HHMMT,其中 T 是上午的“A”和下午的“P”
示例:如果字段中的数据是“2008-10-12 13:19:12.0”,则提取的字段应包含:
- 12OCT
- 0119P
我曾尝试使用 CONVERT 字符串格式,但没有一种格式与我想要获得的输出匹配。我正在考虑通过 CONVERT 提取字段数据,然后使用 REPLACE,但我在这里肯定需要一些帮助,因为我不确定。
任何精通存储过程的人都可以在这里帮助我吗?谢谢!
c# - 如何让 C# 查询组件识别从 sql 存储过程中的临时表返回的数据的列
我创建了一个类似于下面的存储过程(我正在使用这个缩减版本来尝试找出我们的问题)。
从我在 VS2008 中的 C# 代码中,我尝试使用带有使用现有存储过程选项的查询组件将其连接到 DataTable / DataGridView 以显示结果。
但是,因为我是从临时表中选择的,所以在查询组件属性中,Visual Studio 不会显示从存储过程返回的任何列。我假设它无法确定正在使用的数据类型,因为 SP 不是基于真实的模式。
连接到从真实表中选择的不同存储过程确实可以正确显示列。
有人知道吗?是否有某种提示我可以在某处添加以明确说明将返回哪种数据?
提前致谢。
sql - 如何创建可以选择搜索列的存储过程?
我正在开发一个将查询我们的员工数据库的工作应用程序。最终用户希望能够根据标准姓名/部门标准进行搜索,但他们还希望能够灵活地查询在卫生部门工作的所有名字为“James”的人。我要避免的一件事是简单地让存储过程获取参数列表并生成要执行的 SQL 语句,因为这将为内部级别的 SQL 注入打开大门。
这可以做到吗?
sql-server - 从存储过程的结果集中选择列
我有一个返回 80 列和 300 行的存储过程。我想编写一个获取其中 2 个列的选择。就像是
当我使用上述语法时,我得到了错误:
“无效的列名”。
我知道最简单的解决方案是更改存储过程,但我没有编写它,我无法更改它。
有什么办法可以做我想做的事吗?
我可以制作一个临时表来放入结果,但是因为有 80 列,所以我需要制作一个 80 列的临时表才能获得 2 列。我想避免追踪所有返回的列。
我尝试
WITH SprocResults AS ....
按照 Mark 的建议使用,但出现 2 个错误关键字“EXEC”附近的语法不正确。
')' 附近的语法不正确。我尝试声明一个表变量,但出现以下错误
插入错误:列名或提供的值的数量与表定义不匹配
如果我尝试
SELECT * FROM EXEC MyStoredProc 'param1', 'param2'
我得到错误:关键字“exec”附近的语法不正确。
c# - 将 List<> 传递给 SQL 存储过程
我经常不得不将多个项目加载到数据库中的特定记录中。例如:网页显示单个报表要包含的项目,所有这些项目都是数据库中的记录(Report 是 Report 表中的记录,Items 是 Item 表中的记录)。用户正在通过 Web 应用程序选择要包含在单个报告中的项目,假设他们选择了 3 个项目并提交。该过程将通过将记录添加到名为 ReportItems (ReportId,ItemId) 的表中来将这 3 个项目添加到此报告中。
目前,我会在代码中做这样的事情:
这在存储过程中:
函数返回一列整数表。
我的问题是:有没有更好的方法来处理这样的事情?请注意,我不是在询问数据库规范化或类似的问题,我的问题与代码特别相关。
sql - Sql 触发器是同步的还是异步的?
我有一个表,上面有一个插入触发器。如果我在存储过程的一个插入语句中将 6000 条记录插入到该表中,存储过程会在插入触发器完成之前返回吗?
只是为了确保我的想法正确,触发器应该只被调用一次(我知道“调用”不是正确的词),因为只有 1 个插入语句,对吗?
我的主要问题是:即使触发器尚未完成,sproc 也会完成吗?
.net - Formview Insert 模板在 .NET 2.0 中运行存储过程后,如何捕获 inputoutput 参数值?
我有一个 formview,它像往常一样通过表适配器执行插入存储过程。除非插入失败,sp 上名为 error_msg 的输出参数设置为
如何捕获此值并将其打印在用户的屏幕上?我似乎无法找到它。