gpt4 book ai didi

sql-server - 使用变量而不是模式 例如 dbo。用于创建表

转载 作者:行者123 更新时间:2023-12-05 01:47:30 26 4
gpt4 key购买 nike

我想在创建表或 View 时使用变量而不是模式名称。

例如代替

create table dbo.TableName

我要

create table @schema.TableName

另外,我想用提到的解决方案写下面的声明。

IF OBJECT_ID (N'dbo.TableName', 'u') IS NOT NULL
DROP table TableName;
go

这种方式是否完全可行,如果可能哪种方式更有效。

最佳答案

您可以构建连接对象名称的语句并使用 sp_executesql 将其提交到服务器:

Using sp_executesql

例如,创建:

DECLARE @SQLString NVARCHAR(500);
DECLARE @TableName NVARCHAR(100);

SET @TableName = 'dbo.TableName';
SET @SQLString = 'CREATE TABLE ' + @TableName + ' ...';

EXECUTE sp_executesql @SQLString;

和丢弃:

SET @TableName = 'dbo.TableName';
SET @SQLString = 'IF OBJECT_ID (''' + @TableName + ''', ''u'') IS NOT NULL DROP table ' + @TableName;

EXECUTE sp_executesql @SQLString;

如果您从用户那里获取对象名称,则必须降低“Sql 注入(inject)”风险。

关于sql-server - 使用变量而不是模式 例如 dbo。用于创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25674477/

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