gpt4 book ai didi

sql - 执行从标量函数返回的查询

转载 作者:行者123 更新时间:2023-12-02 01:22:13 24 4
gpt4 key购买 nike

我有一个返回查询的标量函数。标量函数必须返回查询本身而不是其结果,因为它使用动态 SQL 并且变量用作列名和表名。

所以,我有这样的东西:

SELECT  t.id, 
dbo.queryToExecute(t.id, t.ColumnToFetch, t.TableToFetchFrom) QueryToExecute
FROM Table t

哪个返回

| ID | QueryToExecute
| 1 | SELECT ColumnName1 FROM Table1 WHERE id = 1
| 2 | SELECT ColumnName2 FROM Table2 WHERE id = 2

虽然“QueryToExecute”返回单个值。我想做类似的事情:

SELECT  t.id, 
EXEC(dbo.queryToExecute(t.id, t.ColumnToFetch, t.TableToFetchFrom)) ExecutedQuery
FROM Table t

所以结果集将是:

| ID | ExecutedQuery
| 1 | Jacob
| 2 | Sarah

我该怎么做?

我已经有一个存储过程可以在我需要单独运行时完成工作,但我想在标量函数上使用相同的东西,以便能够将子结果嵌入到更复杂的查询中。

谢谢!

最佳答案

你需要使用动态SQL:

DECALRE @sql nvarchar(max)

SELECT @sql = COALESCE(@sql,'') +
REPLACE(
dbo.queryToExecute(t.id, t.ColumnToFetch, t.TableToFetchFrom),
'SELECT ',
'SELECT '+ CAST(t.ID as nvarchar(max) +' as ID, '
) +' UNION ALL '
FROM Table t

SELECT @sql = LEFT(@sql,LEN(@sql)-LEN('UNION ALL '))

EXEC sp_executesql @sql

这将在一批中获取所有查询并执行它

关于sql - 执行从标量函数返回的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39347545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com