0

让我先说我对 SQL 不是很了解,这使得寻找答案变得困难。我可能使用了错误的“措辞”。

给定以下查询以执行存储过程:

USE MyDB
SET NOCOUNT ON
    EXECUTE dbo.adm_ExecuteProcedure
        @installationID           = 12345,
        @monthOf                  = '03/01/2013'
GO

可以用select语句动态查找12345吗?以下不起作用,但这是我想要做的。

USE MyDB
SET NOCOUNT ON
    EXECUTE dbo.adm_ExecuteProcedure
        @installationID           = (select id from installs where name = 'foo'),
        @monthOf                  = '03/01/2013'
GO

我无权编辑存储过程。

4

4 回答 4

4
declare @id int;

select  @id = id 
from    installs 
where   name = 'foo';

EXECUTE dbo.adm_ExecuteProcedure
    @installationID           = @id,
    @monthOf                  = '03/01/2013';
于 2013-04-02T15:30:22.283 回答
0

好吧,你可以这样做,但是在调用存储过程的代码中......甚至在存储过程的任何查询中,在这种情况下你根本不需要参数......

于 2013-04-02T15:29:55.673 回答
0

尝试将其存储在变量中(语法取决于您的数据库系统)

于 2013-04-02T15:30:50.337 回答
0

您可以做的是声明变量并从您的选择语句中选择该变量中的installationId,然后在执行存储过程时使用该变量。懂了没。

于 2013-04-02T15:31:30.350 回答