我正在尝试调用一个函数,该函数将 Where 子句中此 Select 的第一列的值用作第二个参数(... = table_timescode.code(。但它对我不起作用。
这就是我正在尝试的:
Select code, name,
[stored_proced] ('3',(Select Min(bol.line) as Line From table_bone bon join table_line bol on
bon.code = bol.code where bon.code = table_timescode.code),1) as SuperCode
From table_timescode
Where (Day >= convert(datetime, '18/05/2020', 103));
我在 SQL Server 中使用Transact-SQLMicrosoft。
这回答了问题的原始版本。
不能在 SQL 查询中使用存储过程。 这是根据定义。 我想到了三个选项:
- 将存储过程转换为存储函数。
- 将存储过程的结果保存在表中。
- 将存储过程的逻辑直接移动到查询中或视图中。
第二个选项相当麻烦,因为您使用的是相关的子查询。 所以它不会起作用,除非你用循环替换你的代码(并使用 - 恐怖的恐怖 - 光标(。
第一个或第三个选项是最好的方法。 请注意,并非所有存储过程都可以转换为函数,因此可能无法实现。