当我手动执行一个存储过程时,我必须填充几个变量。大多数变量不会在每次运行时改变;是否可以预先填充“值”框,以便只在必要时进行更改?我不愿意硬编码脚本,因为有一系列相互关联的过程,我需要保持动态
bzzcjhmw1#
我要冒险出去,猜猜你在说什么 SQL Server ,并通过 SSMS ,因为您对图形界面的描述。今后,请用问题所属的特定数据库平台标记您的问题,并尽量对早期的评论作出回应。你会更快地得到答案(如果我错了,请撤消我添加到问题中的标记。)尽管存储过程可以包含变量,但这里所说的是参数;从调用代码或应用程序传递到过程中的值。参数可以在声明中用默认值定义。
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服务帐户就可以拥有缩减的权限,而不必进行完全记录的逐行删除…)
42
37
Parameters
Pass Null Value
1条答案
按热度按时间bzzcjhmw1#
我要冒险出去,猜猜你在说什么
SQL Server
,并通过SSMS
,因为您对图形界面的描述。今后,请用问题所属的特定数据库平台标记您的问题,并尽量对早期的评论作出回应。你会更快地得到答案(如果我错了,请撤消我添加到问题中的标记。)尽管存储过程可以包含变量,但这里所说的是参数;从调用代码或应用程序传递到过程中的值。
参数可以在声明中用默认值定义。
当存在默认值时,参数对于调用者是可选的。现在可以使用或不使用显式参数调用该过程。这两个都可以运行。
在第一个示例中,过程将使用默认值,
42
. 在第二个示例中,它将使用参数值,37
.您会注意到我在调用中命名了参数。一般来说,这是避免混淆的最佳实践,但它也允许您以任何顺序发送参数。如果你不说出它们的名字,它们将按照它们被声明的顺序被解释,所以你在那里会遇到各种各样的风险。
如果选择通过gui执行过程,默认值将不会预先填充,但是通过展开
Parameters
ssms中过程名称下的选项卡。我找不到带有默认值的示例,但它看起来像这样:如果希望过程使用默认值,只需勾选
Pass Null Value
复选框。(如果您想知道,我们有一个截断过程,这样我们的etl服务帐户就可以拥有缩减的权限,而不必进行完全记录的逐行删除…)