使用存储过程的 s-s-rS 报告

Posted

技术标签:

【中文标题】使用存储过程的 s-s-rS 报告【英文标题】:s-s-rS Report Using Stored Procedure 【发布时间】:2019-02-27 23:47:19 【问题描述】:

我正在处理。

存储过程[Use ... Set ANSI NULLS On之后]以ALTER PROCEDURE ...开头

虽然我可以理解存储过程中的 SQL,但我从未在 s-s-rS 报告中使用过 SQL [我只使用“直接”的 SQL 语句]。

当我使用 SQL 作为我的数据集时,我可以将该 SQL 复制到 SSMS 中并运行它并查看它返回的数据。

使用这个存储过程,我如何在 SSMS 中执行它来查看它返回的数据?存储过程有一个示例“EXEC ...”语句,其中填充了所有参数...但是当我运行它时 - 没有返回数据。

s-s-rS 报告运行良好,但我希望能够使用 SSMS 中的存储过程并查看它返回的数据。我的目标是能够在 SSMS 中运行存储过程,然后对其进行调整。

如何在 SSMS 中使用此存储过程以便查看输出?

【问题讨论】:

如果您查看文档,您可以看到 SP 有一个名称、一些参数,然后是 AS,然后是工作 SQL,它执行 SP 所做的任何事情。可以选择有beginend。只需取出正在运行的 SQL 并使用它。 docs.microsoft.com/en-us/sql/t-sql/statements/… 在 s-s-rS 中,您的查询类型(对于数据集属性)使用存储过程,而不是文本。如果您连接到正确的数据源,您应该能够浏览您有权访问的过程......或者只需输入过程名称。单击确定。如果 SP 需要任何参数,它会自动填充报表上的参数。只有您会知道数据类型等。其他一切都与基于文本的查询相同。在 SSMS 中只需执行 exec name_of_stored_procedure param1,param2, paramx参数应与声明的类型(int、varchar、datetime 等)匹配 或者..浏览到数据库..然后展开可编程性->存储过程然后查找您的存储过程..右键单击..修改..只要您具有正确的权限..您应该看到包含 SQL 代码的整个过程 【参考方案1】:

如果您只想在 SSMS 中执行该过程,请在对象浏览器中找到它([DatabaseName]/Programmability/Stored Procedures)。右键单击该过程并选择“执行存储过程”

填写参数,点击确定,会生成一个脚本来运行程序。

这有点矫枉过正,但至少一切都在那里,你可以随时运行它。

如果要编辑 proc,右键单击并选择修改,将创建一个新脚本(您提到的 ALTER PROCEDURE 脚本)。根据需要进行更改,运行脚本并修改程序,然后执行程序以查看结果。

当然,复制和编辑它会更安全,您也可以通过注释掉 ALTER PROCEDURE 语句来运行存储过程的主体,直到您对它感到满意,但您可能必须声明和变量通常作为参数传入。

【讨论】:

【参考方案2】:

存储过程 [在 Use ... Set ANSI NULLS On 之后] 以 改变程序...

这就是 Alter Procedure 脚本。使用它来编辑存储过程。

换句话说,编辑您要优化的 SQL 代码,然后运行整个脚本以保存更改。


如何在 SSMS 中使用此存储过程,以便查看 输出?

在 SSMS 中使用存储过程的语法:

EXEC myspname paramter1, parameter2, param...

其中parameter1、parameter2等是ALTER Procedure脚本中描述的参数,直接在ALTER PROCEDURE myspname之后。参数前面有 @ 符号。

当您键入 EXEC 过程命令时,应该会出现描述参数的弹出提示。

在不知道存储过程的代码的情况下,它可能会根据参数传递给它的内容做很多事情。存储过程可以进行 DDL 和 DML 查询,并且不必选择任何内容进行输出。

【讨论】:

以上是关于使用存储过程的 s-s-rS 报告的主要内容,如果未能解决你的问题,请参考以下文章

s-s-rS 中的多个报告使用相同的存储过程

s-s-rS 报告未从存储过程中提取数据

将参数从 ReportViewer 传递到 s-s-rS 报告的存储过程数据源

s-s-rS:具有返回同名列的存储过程的报告服务

s-s-rS 文本查询:变量名称在查询批处理或存储过程中必须是唯一的

如何为用户(已经 dbo)授予存储过程的执行权限以运行 s-s-rS 报告