EXEC [dbo].[pr_cfgAddFact]
@SettingName = 'TransferBatch',
@RoleFK = SELECT TOP 1 rolepk FROM cfgRole WHERE cfgRole.Name = 'SuperAdmin'
为什么SQL抱怨这里的SELECT子句?我试图运行与子查询获取数据的过程。SQL Server 2005:EXEC中的子查询?
EXEC [dbo].[pr_cfgAddFact]
@SettingName = 'TransferBatch',
@RoleFK = SELECT TOP 1 rolepk FROM cfgRole WHERE cfgRole.Name = 'SuperAdmin'
为什么SQL抱怨这里的SELECT子句?我试图运行与子查询获取数据的过程。SQL Server 2005:EXEC中的子查询?
试试这个:
DECLARE @RoleFK_value {datatype here}
SELECT TOP 1 @RoleFK_value=rolepk FROM cfgRole WHERE cfgRole.Name = 'SuperAdmin'
EXEC [dbo].[pr_cfgAddFact]
@SettingName = 'TransferBatch',
@RoleFK = @RoleFK_value
你不能有内执行该过程的查询,存储过程的参数不允许这样。首先,首先将值选择为局部变量,然后将该局部变量传递给存储过程。
存储过程参数可能只是值,@variables或关键字DEFAULT
,这意味着查询和表达式矿石不允许的。
Execute a stored procedure or function
[ { EXEC | EXECUTE } ]
{
[ @return_status = ]
{ module_name [ ;number ] | @module_name_var }
[ [ @parameter = ] { value
| @variable [ OUTPUT ]
| [ DEFAULT ]
}
]
[ ,...n ]
[ WITH RECOMPILE ]
}
[;]
尝试
SELECT TOP 1 @RoleFK=rolepk FROM cfgRole WHERE cfgRole.Name