我有一个允许 2 个参数的函数:
SELECT * FROM dbo.MyFunction( 'Value1', 'Value2' )
我需要使用 sql 语句来传递参数:
SELECT * FROM dbo.MyFunction
(
( SELECT Column1 FROM MyTable WHERE Rec = 1 ),
( SELECT Column2 FROM MyTable WHERE Rec = 1 )
)
由于 2 Select 语句引用同一个表,我想知道是否可以通过单个 select 语句传递值来达到这种效果:
SELECT * FROM dbo.MyFunction( ( SELECT Column1, Column2 FROM MyTable WHERE Rec = 1 ) )
这样的事情可能吗?它必须像上面一样保留为单个语句,不幸的是不可能使用变量,否则我可以轻松地做到这一点:
DECLARE @Var1 nvarchar(20)
DECLARE @Var2 nvarchar(20)
SELECT @Var1 = Column1, @Var2 = Column2 FROM MyTable WHERE Rec = 1
SELECT * FROM dbo.MyFunction( @Var1, @Var2 )
该脚本被输入到 Web 应用程序的解析引擎中,但它仅支持基本的 SELECT 功能,因为脚本被撕开然后重新组合在一起以防止 SQL 注入攻击,因此我们能够做的事情非常有限. 上面的第一个和第二个脚本完美地工作,我只是想看看是否有办法让第三个脚本工作优化脚本。
感谢任何帮助。