miércoles, 29 de abril de 2009

Paginacion en ORACLE

Para paginar un resultado en ORACLE hay que hacerlo con una subconsulta y el rownum de cada registro. Un ejemplo es este:

SELECT * FROM (
SELECT TABLA.* , ROWNUM AS FILAS
FROM TABLA )
WHERE FILAS BETWEEN 5 AND 10

miércoles, 22 de abril de 2009

Funcion Top o Limit en Oracle

Si alguna vez se han preguntado como hacer para obtener un resultado similar al de la funcion TOP de SQL Server o LIMIT de MySQL simplemente tienen que hacer:

ORACLE
SELECT * FROM Tabla1 WHERE rownum <= 10

SQL Server 2005
SELECTtop 10 * FROM Tabla1

MySQL
SELECT * FROM Tabla1 LIMIT 10

martes, 31 de marzo de 2009

Ejemplo de User Defined Function

Ejemplo de User Function en SQL Server 2005

USE [name_db]
GO
/****** Object: UserDefinedFunction [dbo].[getAccounts] Script Date: 03/31/2009 15:31:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[getAccounts]
(@kchecks varchar(10))
RETURNS varchar(max)
AS
BEGIN
declare @Return varchar(max)
DECLARE @temp table (
[tmp_field] [varchar] (max)
)

set @Return = ''

INSERT INTO @temp SELECT Account.account_id
from advocate_mig_final.dbo.checks
inner join advocate_mig_final.dbo.chckjrnl on chckjrnl.kchecks = checks.kchecks
inner join advocate_mig_final.dbo.journal on journal.kjournal = chckjrnl.kjournal
inner join advocate_db_final.dbo.Account on Account.leg_kaccounts = journal.kaccounts
where journal.djournal > '12/31/1999' and checks.kvictims != '111111'
and checks.kchecks =@kchecks


select @Return = @Return +','+ tmp_field
from @temp

If len(@Return) > 0 Select @Return = right(@Return, len(@Return) - 1)


return @return
end


--select advocate_mig_final.dbo.getAccounts('AFCAYP')

Stored Procedure como función con valor de retorno

Un ejemplo de como hacer que un Stored Procedure retorne un valor como una funcion



USE [name_db]

GO
/****** Object: StoredProcedure [dbo].[GetLastLocationRecipt] Script Date: 03/31/2009 11:03:20 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Create date: March 18th, 2009
-- Description: ....
-- =============================================
ALTER PROCEDURE [dbo].[GetLastLocationRecipt] (
@location_id int
) WITH RECOMPILE
AS
BEGIN
SET NOCOUNT ON;

DECLARE @location_str varchar(100)
SET @location_str = 'last_receipt_'+cast(@location_id as varchar);

DECLARE @cant int;
DECLARE @new_cant varchar(100);

-- Begin transaction
BEGIN TRANSACTION

SELECT @cant = count(*)
FROM SysPreferences
WHERE preference = @location_str

IF (@cant > 0) -- Exist a previous recipt for the location
BEGIN
-- obtain the last value
SELECT @new_cant = SysPreferences.value
FROM SysPreferences
WHERE preference = @location_str

SET @new_cant = cast( (cast(@new_cant as int)+1) as varchar);
-- update the last value
UPDATE SysPreferences SET SysPreferences.value = @new_cant WHERE preference = @location_str;
END
ELSE
BEGIN
SET @new_cant = cast( '1' as varchar);
INSERT INTO SysPreferences ([preference], [value]) values ('last_receipt_'+cast(@location_id as varchar), @new_cant);
END

-- End transaction
COMMIT TRAN

SELECT @new_cant
END

jueves, 20 de noviembre de 2008

Posicion de objetos en JavaScript

Muchas veces precisamos saber exactamente cual es la posicion de un objeto HTML como una Tabla, un Div, o lo que sea para poder ponerle otro objeto cerca o encima y poder simular por ejemplo un "loading..". Obtener la posicion es a veces dificil porque depende si es relativa, o absoluta y segun las implementaciones de cada Browser. Bueno, aqui hay un par de funciones JavaScript que funcionan para FireFox, IE y Safari y calculan la posicion absoluta del elemento pasado por parámetro.
  function findPosX(obj)
{
var curleft = 0;
if(obj.offsetParent)
while(1)
{
curleft += obj.offsetLeft;
if(!obj.offsetParent)
break;
obj = obj.offsetParent;
}
else if(obj.x)
curleft += obj.x;
return curleft;
}

function findPosY(obj)
{
var curtop = 0;
if(obj.offsetParent)
while(1)
{
curtop += obj.offsetTop;
if(!obj.offsetParent)
break;
obj = obj.offsetParent;
}
else if(obj.y)
curtop += obj.y;
return curtop;
}

miércoles, 19 de noviembre de 2008

Web Server para Cognos

Antes de instalar Cognos debemos tener instalado un Web Server (o http server) a través del cual vamos a acceder al contenido del servidor de Cognos.

Si tenemos a mano el cd de instalación de windows XP, podemos instalar Internet Information Services (IIS), yendo a Panel de control => Agregar o quitar programas => Sobre la derecha seleccionar Agregar o quitar componentes de Windows => seleccionar IIS.

Luego que instalamos IIS debemos definir dos alias:

Alias Location Permission
cognos8 c8_location/webcontent Read
cognos8/cgi-bin c8_location/cgi-bin Execute

La alternativa a usar IIS es usar Apache, para eso, en el archivo
C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf

Debemos agregar los siguientes alias al final:

### Cognos 8 ###
ScriptAlias /cognos8/cgi-bin "C:/Program Files/cognos/c8/cgi-bin"

Options FollowSymLinks
AllowOverride FileInfo
Order Allow,Deny
Allow from All


Alias /cognos8 "C:/Program Files/cognos/c8/webcontent"

Options FollowSymLinks
AllowOverride FileInfo
Order Allow,Deny
Allow from All


Luego de guardar el archivo httpd.conf, reiniciar el servidor apache, yendo a Panel de control => Herramientas administrativas => Servicios => Apache => Boton derecho => Restart

Para terminar reiniciar el servidor de Cognos desde Cognos Configuration.

En la direccion http://localhost/cognos8/cgi-bin/cognos.cgi accedemos al portal.

Cognos Content Database

Cuando instalamos Cognos 8, tenemos que asociar un content store, que puede ser una base de datos Oracle, SQL server, DB2 o Sybase.

También tenemos la posibilidad, en caso de que estemos usando Cognos para una POC, de usar la Cognos Content Database, la cual es una base de datos Derby, que es creada al momento de la instalación.

Para poder usar la Cognos Content Database, en el dialogo de instalación tenemos que seleccionar esta opción, dentro de las herramientas que queremos instalar, ya que por defecto viene deshabilitada.

Luego de finalizada la instalación, debemos abrir Cognos Configuration y dentro de Data Access => Content Manager, vamos a ver un content store que viene creado por defecto, pero que esta asociado a SQL Server. Este content store lo tenemos que borrar (boton derecho => delete) y crear uno nuevo (en Content Manager => botón derecho => Add content store) y ahí seleccionamos el tipo de base de datos (Cognos Content Database), el server y el puerto (localhost:1527), usuario y password (cognos/cognos) y el nombre de la base de datos (cm). Estos son los valores que crea el wizard de instalación.

No olvidarse de guardar los cambios y reiniciar el servidor.

Mis fotos en TrekEarth