使用动态 SQL 删除表
我的 SQL
存储过程遇到问题,特别是使用它传入 VARCHAR()
作为表名。
我的代码(不起作用)是:
CREATE PROCEDURE DeleteUser
@Username VARCHAR(50)
AS
BEGIN
--DROP THE SURF TABLE
IF EXISTS (SELECT 1
FROM sysobjects
WHERE xtype='u' AND name=@Username + '_table')
DROP TABLE @Username + '_table'
END
GO
但是,在执行时,它在 DROP TABLE @Username + '_table'
行出错。
我可能做错了什么?
如果有必要的话,我正在使用 MS SQL Server 2008,从 C# 调用。
I am having trouble with my SQL
stored procedure, specifically passing in VARCHAR()
as a table name using it.
My code (not working) is:
CREATE PROCEDURE DeleteUser
@Username VARCHAR(50)
AS
BEGIN
--DROP THE SURF TABLE
IF EXISTS (SELECT 1
FROM sysobjects
WHERE xtype='u' AND name=@Username + '_table')
DROP TABLE @Username + '_table'
END
GO
However, on execution it errors at the DROP TABLE @Username + '_table'
line.
What could I be doing incorrectly?
I am using MS SQL Server 2008 if it matters, called from C#.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当您尝试时,
DROP TABLE
语句无法参数化。您将需要动态 SQL。The
DROP TABLE
statement can't be parametrised as you are trying. You would need dynamic SQL.