gpt4 book ai didi

sql - 我们可以在另一个存储过程中编写一个子函数或过程吗

转载 作者:行者123 更新时间:2023-12-03 12:41:49 24 4
gpt4 key购买 nike

我想检查 SQL Server(2000/05/08) 是否有能力编写嵌套存储过程,我的意思是 - 在另一个存储过程中编写子函数/过程。不调用另一个 SP。

为什么我在考虑它是-我的一个 SP 有重复的代码行,并且只针对这个 SP。所以如果我们有这个嵌套的 SP 功能,那么我可以在我的主 SP 中声明另一个子/本地过程,并且把所有重复的行放在里面。我可以在我的主 SP 中调用该本地 sp。我记得 Oracle SP 中提供了此类功能。

如果 SQL Server 也具有此功能,有人可以解释有关它的更多详细信息或提供我可以找到文档的链接。

提前致谢

最佳答案

我不建议这样做,因为每次创建新的执行计划时都必须计算,但是是的,它绝对可以完成(一切皆有可能,但并不总是推荐)。

这是一个例子:

CREATE PROC [dbo].[sp_helloworld]
AS
BEGIN
SELECT 'Hello World'
DECLARE @sSQL VARCHAR(1000)
SET @sSQL = 'CREATE PROC [dbo].[sp_helloworld2]
AS
BEGIN
SELECT ''Hello World 2''
END'
EXEC (@sSQL)

EXEC [sp_helloworld2];
DROP PROC [sp_helloworld2];
END

你会收到警告
The module 'sp_helloworld' depends on the missing object 'sp_helloworld2'.
The module will still be created; however, it cannot run successfully until
the object exists.

您可以使用上面的 EXEC('sp_helloworld2') 绕过此警告。

但是如果你调用 EXEC [sp_helloworld] 你会得到结果
Hello World
Hello World 2

关于sql - 我们可以在另一个存储过程中编写一个子函数或过程吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/495700/

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