TRUNCATE TABLE

07/03/2005 - 16:33 por Hernan Nieto | Informe spam
Hola:

Se que lo que pregunto es una tontera, pero no puedo conseguir que funcione.
Necesito crear un procedimiento almacenado que me reciba de parametro un
nombre de tabla de la BD y le realize a esa tabla un TRUNCATE TABLE.
Desde ya, muchas gracias.

Preguntas similare

Leer las respuestas

#6 Hernan Nieto
08/03/2005 - 13:46 | Informe spam
Estoy intentando con TRUNCATE TABLE (ya que las tablas no tienen relaciones
entre ellas), pero no puedo conseguir que me reciba como parametro el nombre
la tabla. Alguien puede indicarme la sintaxis correcta dentro de un
procedimiento almacenado. Muchas gracias.
#7 Alejandro Mesa
08/03/2005 - 14:19 | Informe spam
Hernan,

Para ello debes crear la sentencia de forma dinamica.

Ejemplo:

use northwind
go

create procedure usp_truncate_table
@ts sysname,
@tn sysname
as
set nocount on

declare @error int
declare @rv int
declare @sql nvarchar(4000)

if object_id(quotename(@ts) + '.' + quotename(@tn)) is not null
if objectproperty(object_id(quotename(@ts) + '.' + quotename(@tn)),
'IsUserTable') = 1
begin
set @sql = N'truncate table ' + quotename(@ts) + '.' + quotename(@tn)
execute @rv = sp_executesql @sql

set @error = coalesce(nullif(@rv, 0), @@error)

return @error
end
else
begin
raiserror('El objeto [%s].[%s] no es una tabla de usuario.', 16, 1, @ts,
@tn)
return 1
end
else
begin
raiserror('No existe tabla [%s].[%s]', 16, 1, @ts, @tn)
return 1
end
go

select orderid into t1 from orders
select orderdate into t2 from orders
go

declare @rv int

exec @rv = usp_truncate_table N'dbo', N't1'
print @rv
exec @rv = usp_truncate_table N'dbo', N't2'
print @rv
go

declare @rv int

exec @rv = usp_truncate_table N'dbo', N't3'
print @rv
go

drop procedure usp_truncate_table
go


AMB

"Hernan Nieto" wrote:

Mostrar la cita
#8 Hernan Nieto
08/03/2005 - 14:31 | Informe spam
Alejandro,

Gracias por contestar. Me imaginaba que la mano venia por la sentencia
dinamica. Me podiras explicar, si no te jodo, que significa la N que esta
antes de la sentencia Truncate:

set @sql = N'truncate table ' + quotename(@ts) + '.' + quotename(@tn)

Saludos
#9 Alejandro Mesa
08/03/2005 - 14:51 | Informe spam
Hernan,

La variable @sql es tipo unicode (nvarchar) y la N'...' en frente de la
cadena indica eso.


AMB

"Hernan Nieto" wrote:

Mostrar la cita
#10 Hernan Nieto
09/03/2005 - 00:20 | Informe spam
Alejandro, gracias por el concepto. Ya funciono el procedimiento.

Saludos
Ads by Google
Search Busqueda sugerida