Reputation: 2783
I want to write SP to delete rows from given table based on ID column. I tried the following:
CREATE PROCEDURE dbo.delResTab @schema VARCHAR(20), @table VARCHAR(50), @tableID int
AS
DECLARE @column VARCHAR(50) = (
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.columns
WHERE TABLE_SCHEMA = @schema
AND TABLE_NAME = @table
AND ORDINAL_POSITION = 1
)
DELETE FROM @schema + '.' + @table WHERE @column >= @tableId
but this does not work obviously. Any advice?
I want to be able to run
exec dbo.delResTab @schema = 'dbo', @table = 'test', @tableID = 3
Upvotes: 2
Views: 862
Reputation: 121922
CREATE PROCEDURE dbo.delResTab
(
@schema SYSNAME,
@table SYSNAME,
@tableID INT
)
AS BEGIN
SET NOCOUNT ON;
DECLARE @SQL NVARCHAR(MAX)
SELECT @SQL = '
DELETE FROM [' + @schema + '].[' + @table + ']
WHERE ' + c.name + ' >= ' + CAST(@tableID AS NVARCHAR(10))
FROM sys.columns c
WHERE c.is_identity = 1
AND c.[object_id] = OBJECT_ID(@schema + '.' + @table)
--PRINT @SQL
EXEC sys.sp_executesql @SQL
END
Upvotes: 1