procedimiento almacenado

30/06/2004 - 16:59 por polo | Informe spam
me podrian decir que instrucciones se pueden usar en
procedimientos almacenados?

si tienen algun ejemplo (de sp y trigger) mejor.

muchas gracias.

Preguntas similare

Leer las respuestas

#1 Maxi
30/06/2004 - 17:24 | Informe spam
Hola, mejor te digo que instrucciones no se pueden usar ;-)

CREATE DEFAULT
CREATE PROCEDURE
CREATE RULE
CREATE TRIGGER
CREATE VIEW

El resto las podes usar todas!!!

Bye


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"polo" escribió en el mensaje
news:233c401c45eb2$db651140$
me podrian decir que instrucciones se pueden usar en
procedimientos almacenados?

si tienen algun ejemplo (de sp y trigger) mejor.

muchas gracias.





Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.707 / Virus Database: 463 - Release Date: 15/06/2004
Respuesta Responder a este mensaje
#2 Diego Uribe
30/06/2004 - 17:35 | Informe spam
Puedes hacer de todo
desde un shrink de la base de datos como por ejemplo (en master):

CREATE PROCEDURE uprc_ShrinkDB
@dbid tinyint
AS BEGIN
Declare @db as varchar(50),
@dbfile as varchar(50);
DECLARE dbfls CURSOR FOR
Select Rtrim(sysdatabases.name), Rtrim(sysaltfiles.name)
From sysdatabases,
sysaltfiles
Where sysdatabases.dbid = sysaltfiles.dbid and
sysaltfiles.fileid = 2 and
sysdatabases.dbid >= @dbid;
OPEN dbfls;
FETCH NEXT FROM dbfls INTO @db, @dbfile;
While ( @@FETCH_STATUS = 0 ) BEGIN
Exec ('USE ' + @db + '; CHECKPOINT;');
Exec ('USE ' + @db + '; CHECKPOINT;');
Exec ('USE ' + @db + '; CHECKPOINT;');
DBCC SHRINKDATABASE (@db, 0 , TRUNCATEONLY);
BACKUP LOG @db WITH TRUNCATE_ONLY;
Exec ('USE ' + @db + '; DBCC SHRINKFILE (''' + @dbfile + ''',
EMPTYFILE);');
FETCH NEXT FROM dbfls INTO @db, @dbfile;
End;
CLOSE dbfls;
DEALLOCATE dbfls;
END;

tambien puede hacer un backup de la base de datos (master):

CREATE PROCEDURE uprc_Backup
@Path varchar(255)
AS BEGIN
DECLARE @i INT;
DECLARE @tmp varchar(500);
DECLARE @pth varchar(50);
DECLARE @bd varchar(50);
DECLARE @cont int;
DECLARE @max int;
Set @cont=1
Select @max=count(*) From sysdatabases Where dbid >= 5 or dbid = 1; -- ">5"
e "=1" todas las bases distitnas de tempdb y otras
DECLARE bd_cur CURSOR FOR Select sysdatabases.name From sysdatabases Where
dbid >= 5 or dbid = 1;
OPEN bd_cur;
FETCH NEXT FROM bd_cur INTO @bd;
WHILE ( @cont <= @max ) BEGIN
Set @pth = @path + @bd;
Set @tmp = 'Copia de seguridad ' + @bd + Cast(GetDate() as varchar)
BACKUP DATABASE @bd TO DISK = @pth WITH INIT, NOUNLOAD, NAME = @tmp, SKIP,
STATS = 10, NOFORMAT;
select @i = position from msdb..backupset
where database_name=@bd and
type!='F' and
backup_set_id= (
select max(backup_set_id)
from msdb..backupset
where database_name=@bd
);
RESTORE VERIFYONLY FROM DISK = @pth WITH FILE = @i;
Set @cont = ( @cont + 1 );
FETCH NEXT FROM bd_cur INTO @bd;
End;
CLOSE bd_cur;
DEALLOCATE bd_cur;
END;

o un trigger de auditoria:

CREATE TRIGGER auditoria ON tabla
FOR INSERT, UPDATE, DELETE
AS BEGIN DECLARE
@valold varchar(8000),
@valnew varchar(8000),
@fields varchar(180),
@user1 varchar(15),
@type char(1);
DECLARE @new int, @old int, @max int, @cont int;
Set CONCAT_NULL_YIELDS_NULL off;
Set NoCount on;
Set @fields = 'campo1,campo2,campo3';
Select @new = count(*) from inserted;
Select @old = count(*) from deleted;
IF (@new<>0 and @old<>0 ) Set @type = 'U'; --update
IF (@new<>0 and @old=0 ) Set @type = 'I'; --insert
IF (@new=0 and @old<>0 ) Set @type = 'D'; --delete
IF (@type='U' or @type='I') Begin Set @max = @new;
DECLARE ins_cur CURSOR FOR SELECT campo1, campo2, campo3 FROM inserted;
OPEN ins_cur;
FETCH NEXT FROM ins_cur INTO @valnew;
End;
IF (@type='U' or @type='D') Begin Set @max = @old;
DECLARE del_cur CURSOR FOR campo1,campo2, campo3 FROM deleted;
OPEN del_cur;
FETCH NEXT FROM del_cur INTO @valold;
End;
Set @cont = 1;
WHILE ( @cont <= @max ) BEGIN
INSERT INTO caf_auditor (tipo, codigotabla, fecha, valorold, valornew,
campos)
Values (@type,65,getdate(),@valold,@valnew,@fields);
IF (@type='U' or @type='I') FETCH NEXT FROM ins_cur INTO @valnew;
IF (@type='U' or @type='D') FETCH NEXT FROM del_cur INTO @valold;
Set @cont = ( @cont + 1 );
End;
IF (@type='U' or @type='I') Begin
CLOSE ins_cur;
DEALLOCATE ins_cur;
End;
IF (@type='U' or @type='D') Begin
CLOSE del_cur;
DEALLOCATE del_cur;
End;
Set NoCount off;
END;

Y sobra decir que para cada labor existen 1000 soluciones distintas, los
ejemplos es 1 de esas mil.

Saludos


Diego

"polo" escribió en el mensaje
news:233c401c45eb2$db651140$
me podrian decir que instrucciones se pueden usar en
procedimientos almacenados?

si tienen algun ejemplo (de sp y trigger) mejor.

muchas gracias.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida