【发布时间】:2020-07-26 23:07:43
【问题描述】:
我的问题是关于如何在存储过程中引用对象。我想知道这样的事情是否可行:
create proc drop_table @tablename ??
as
drop table @tablename
这样的事情呢?
create or alter proc select_col @col_name nvarchar(50), @table_nbame nvarchar(50)
as
select @col_name
from @table_nbame
我可以创建变量并引用 SP 中的表吗?
【问题讨论】:
-
@DeanOC 我的问题更多是关于如何在存储过程中引用对象...
-
@David 如果你查看链接,这正是它所解释的......如何做你想做的事,这需要动态 SQL。
-
想要这些类型的通用过程在 T-SQL 中确实被认为是一种反模式。它不仅让您接触到 SQL 注入,而且动态 SQL 更难测试和维护。它不是 T-SQL 的设计目的。
-
@DaleK,好的,因此无法引用对象,例如存储过程中的表。而且我必须从 sys.tables 中获取信息……对吧?
-
答案是使用
sys.tables来测试给定的表是否存在......你的问题没有提到这一点,但如果这就是你所需要的,那么你就是这样做的。
标签: sql sql-server tsql stored-procedures