存储过程中的sql变量

dnph8jn4  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(352)

当我手动执行一个存储过程时,我必须填充几个变量。
大多数变量不会在每次运行时改变;是否可以预先填充“值”框,以便只在必要时进行更改?
我不愿意硬编码脚本,因为有一系列相互关联的过程,我需要保持动态

bzzcjhmw

bzzcjhmw1#

我要冒险出去,猜猜你在说什么 SQL Server ,并通过 SSMS ,因为您对图形界面的描述。今后,请用问题所属的特定数据库平台标记您的问题,并尽量对早期的评论作出回应。你会更快地得到答案(如果我错了,请撤消我添加到问题中的标记。)
尽管存储过程可以包含变量,但这里所说的是参数;从调用代码或应用程序传递到过程中的值。
参数可以在声明中用默认值定义。

CREATE OR ALTER PROCEDURE dbo.SomeProc (
   @SomeBigIntegerValue bigint = 42
)
AS...

当存在默认值时,参数对于调用者是可选的。现在可以使用或不使用显式参数调用该过程。这两个都可以运行。

EXECUTE dbo.SomeProc;
EXECUTE dbo.SomeProc 
    @SomeBigIntegerValue = 37;

在第一个示例中,过程将使用默认值, 42 . 在第二个示例中,它将使用参数值, 37 .
您会注意到我在调用中命名了参数。一般来说,这是避免混淆的最佳实践,但它也允许您以任何顺序发送参数。如果你不说出它们的名字,它们将按照它们被声明的顺序被解释,所以你在那里会遇到各种各样的风险。
如果选择通过gui执行过程,默认值将不会预先填充,但是通过展开 Parameters ssms中过程名称下的选项卡。我找不到带有默认值的示例,但它看起来像这样:

如果希望过程使用默认值,只需勾选 Pass Null Value 复选框。
(如果您想知道,我们有一个截断过程,这样我们的etl服务帐户就可以拥有缩减的权限,而不必进行完全记录的逐行删除…)

相关问题