martes, 7 de octubre de 2008

Para Compimir una Base de Datos SQL Server

Exiten dos formas de liberar espacio en Una base de datos, una desde el administrador de Base de Datos y la segunda por medio de codigo.

Este es un ejemplo de como haxcerlo por codigo

USE baseDatos
CHECKPOINT DUMP TRANSACTION baseDatos WITH TRUNCATE_ONLY DBCC SHRINKFILE (basdatos_Log,10)

viernes, 6 de junio de 2008

COMO EJECUTAR DESDE POWER BUILDER PROCEDIMIENTOS ALMACENADOS (STORED PROCEDURES) QUE DEVUELVEN VARIOS REGISTROS

David Castillo castillodavid@gmail.com

Para ejecutar un procedimiento almacenado que devuelve varios registros es necesario recibir los registros en un cursor.

Para este ejemplo utilizaremos la Base de Datos Northwind de SQL Server.

1. Primero creamos un procedimiento almacenado que desplegara los empleados cuyo titulo incluya la palabra 'representative'

SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
-- Definimos el procedimiento almacenado

-- este procedimiento devuelve aquellos titulos que incluyan en el campo título el parametro enviado


CREATE Procedure Pemployees
--recibimos un parametro
@filtro varchar(10)

as
-
-declaramos la variable que contendra el resultado

select employeeid, lastname,firstname,title
from employees
where title like '%'+@filtro+'%'

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

2. En Power Builder desplegaremos el resultado en el control List (LB_1)

//Codigo en Power Builder
//Declaramos las variables de trabajo
int employeeid
string lastname
string firstname

//Declaramos la variable que enviara el parametro
string filtro
filtro = 'representative'

//declaramos el procedimiento almacenado
//Primero declaramos con un nombre lógico del procedimiento almacenado
//y enviamos el parametro

declare pb_Employees procedure for PEmployees
@filtro = :filtro;

//ejecutamos el procedimiento
execute pb_Employees;

//el resultado es devuelto en un cursor el cual es vaciado en el cursor resultado
fetch pb_Employees into :Employeeid, :lastname, :firstname, :title;

//Una vez cargado el cursor con n registros lo recorremos
//Mientras no sea fin del cursor
DO WHILE sqlca.sqlcode = 0
//Adicionamos a un lb_1 los registros recorridos
lb_1.additem( string(Employeeid) + ' ' + lastname + ' ' + firstname + ' ' + title)

// Colocamos los valores de la siguiente fila a las variables de trabajo
fetch pb_Employees into :Employeeid, :lastname, :firstname, :title;
LOOP

//cerramos el cursor
close pb_Employees;