我有这样的情景。我需要在<canvas id='canvas' width=350 height=350/>
语句中执行存储过程,其中调用存储过程的输入参数取自SELECT
语句中使用的表。此外,还有多个函数调用如下所示,它们使用SELECT
子句中使用的表的输入,但由于某种原因它不起作用。这是我正在尝试实现的下面的代码示例。
代码示例: -
SELECT
错误: -
Msg 4121,Level 16,State 1,Procedure XYZ,Line 34
找不到列“schemaname”或用户定义的函数或聚合“schemaname.dbo.storedproc”,或者名称不明确。
注意: - 我使用基于集合的方法为输入表中的所有行调用此存储过程。
答案 0 :(得分:4)
你不能在select中执行存储过程。你正在寻找的是一个标量值函数/表值函数,如下所示
--scalar valued function
create function dbo.test( int a)
returns int
as
begin
return someval of int
end
现在您可以在上面的选择中调用上面的
select a,b,dbo.test(a) from t
如果存储的proc返回多个值,则可以创建表值函数并可以使用cross / outer apply
---表值函数示例
CREATE FUNCTION dbo.ivf
( @a int,
@b int )
RETURNS table
AS
RETURN (
SELECT a,b from table
)
现在您可以像下面这样调用
select a,b from table t1
cross apply
(select * from dbo.ivf(a,b))c