Bre*_*ett 4 sql sql-server sql-server-2008
我的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
Run Code Online (Sandbox Code Playgroud)
但是,在执行时它DROP TABLE @Username + '_table'在行上出错.
我可能做错了什么?
我正在使用MS SQL Server 2008,如果它很重要,从C#调用.
Mar*_*ith 10
DROP TABLE当你尝试时,语句不能被参数化.您需要动态SQL.
DECLARE @DynSql nvarchar(max) = 'DROP TABLE ' + QUOTENAME(@Username + '_table');
EXEC(@DynSql);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7897 次 |
| 最近记录: |