gpt4 book ai didi

sql - 如何使用动态模式创建存储过程

转载 作者:行者123 更新时间:2023-12-03 23:06:34 25 4
gpt4 key购买 nike

Create MySchema.MySpName
As
Begin
Select * from MyTable
End

正如您在上面看到的,在 MySchema 模式中有一个存储过程,我想动态地使用这个模式。

因为我有许多具有不同模式的数据库,例如 MySchema1MySchema2。假设我想在架构 MySchema1 中执行上述存储过程,所以我希望我的存储过程将使用架构 MySchema1.MySpName

创建

任何建议。

最佳答案

如果不指定模式就无法创建过程,因此在 SQL Server 中创建的任何对象都是模式绑定(bind)的,这是在 SQL Server 2005 中实现的 SQL Server 安全约束。

SQL Server 中的所有对象都必须在特定架构下。现在你有两种选择。

  1. 在数据库的每个模式中创建此过程。

  2. 在任何一个模式中创建一个过程,并在过程内部使其接受对象名称和模式名称。

示例

CREATE PROCEDURE dbo.Proc_Name
@SchemaName NVARCHAR(128),
@TableName NVARCHAR(128)
AS
BEGIN
SET NOCOUNT ON;

DECLARE @Sql NVARCHAR(MAX);

SET @Sql = N' SELECT * FROM ' + QUOTENAME(@SchemaName)
+ N'.' + QUOTENAME(@TableName)

EXECUTE sp_executesql @Sql

END

现在此过程将在默认架构下运行,但您可以在运行时传递架构名称和对象名称以调用来自不同架构的对象。

关于sql - 如何使用动态模式创建存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23197259/

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