Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Adaptar una funcion a un procedimiento

Estas en el tema de Adaptar una funcion a un procedimiento en el foro de SQL Server en Foros del Web. Hola, buscando una forma de filtrar caracteres via sql en un script ya existente encontre una, pero es muy avanzada para mi nivel actual de ...
  #1 (permalink)  
Antiguo 03/09/2010, 23:17
 
Fecha de Ingreso: septiembre-2010
Mensajes: 2
Antigüedad: 13 años, 7 meses
Puntos: 0
Adaptar una funcion a un procedimiento

Hola, buscando una forma de filtrar caracteres via sql en un script ya existente encontre una, pero es muy avanzada para mi nivel actual de SQL, por lo tanto, no se adaptarlo, quisiera pedirles que si alguno de ustedes tiene el conocimiento suficiente, adaptar la funcion de sacar los caracteres raros y admitir solo de la A a la Z como este hace:

Código PHP:
IF EXISTS (SELECT 1 FROM sysobjects WHERE name='ASCIICharOnly')
DROP FUNCTION dbo.ASCIICharOnly
  GO

  CREATE 
FUNCTION dbo.ASCIICharOnly (@CharData VARCHAR(50))
    
RETURNS VARCHAR(50)
    AS
    
BEGIN
DECLARE @Index INT,
      @
ASCIIData VARCHAR(50),
      @
ASCIIChar INT
      
-- Initialization code
      SET 
@Index 1
        SET 
@ASCIIData ''

          
WHILE @Index LEN(@CharData)+1
            BEGIN
              SET 
@ASCIIChar ASCII(SUBSTRING(@CharData, @Index1))
                --
Restrict the result to A-and a-z
                
IF @ASCIIChar BETWEEN 65 and 90 or @ASCIIChar BETWEEN 97 and 122
                BEGIN
                  
-- Construct the output characters
                  SET 
@ASCIIData = @ASCIIData CHAR(@ASCIIChar)
                    
END
                    SET 
@Index = @Index 1
                      END
                      
RETURN @ASCIIData
                      END
                      GO
                      
-- Sample test
                      SELECT dbo
.ASCIICharOnly ('Vinod1234Kumar!@$%Test') AS CharValue 
Al siguiente script
Código PHP:
CREATE procedure WZ_GuildCreate
@GuildName nvarchar(50),
@
MasterName nvarchar(10)
as
if (
SELECT COUNT(*) FROM guild where G_Name=@GuildName )=0

BEGIN
DECLARE @ErrorCode int

SET 
@ErrorCode 0
SET XACT_ABORT OFF

Set nocount on

begin transaction

-- 望萄蒂 儅撩棻.
IF EXISTS(SELECT Character.NameMEMB_INFO.VipCharacter.AccountIDMEMB_INFO.memb___id
FROM Character JOIN MEMB_INFO ON Character
.AccountID=MEMB_INFO.memb___id COLLATE Latin1_General_CS_AS
WHERE 
(Character.Name = @MasterName) AND (MEMB_INFO.Vip 1))

BEGIN

INSERT INTO Guild 
(G_Name,G_Master,G_ScorevalueS (@GuildName, @MasterName1)
IF ( @@
Error <> )
BEGIN
SET 
@ErrorCode 1
END

-- &#26395;萄蒂 薑鼻瞳戲煎 儅撩 棻賊
IF ( @ErrorCode )
BEGIN
-- &#26395;萄 葆蝶攪煎 蹺陛棻.
INSERT GuildMember (NameG_NameG_LevelvalueS (@MasterName, @GuildName1)
IF ( @@
Error <> )
BEGIN
SET 
@ErrorCode 2
END
END

IF ( @ErrorCode <> )
rollback transaction
ELSE
commit transaction

select 
@ErrorCode

Set nocount off
SET XACT_ABORT ON
END

end
GO 
Mas bien, lo que necesitaria es adaptar el filtrado de caracteres ascii ( q es la funcion del otro script) al procedimiento wz_guildcreate



Si alguien me hace el favor se lo agradeceria muchisisisimo.
  #2 (permalink)  
Antiguo 06/09/2010, 08:14
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Adaptar una funcion a un procedimiento

Buenos días Kind, no entiendo a qué te refieres con "Adaptar" la función al procedimiento almacenado. La función como tal sirve para eliminar los caracteres que no sean letras de la cadena que envías de parámetro, de tal manera que con el ejemplo que ponen la cadena 'Vinod1234Kumar!@$%Test' se convierte en 'VinodKumarTest'.

¿Qué necesitas que haga tu procedimiento almacenado? ¿validar antes de hacer el insert? ¿sobre qué campos? como dije al principio no me queda claro qué es lo que necesitas.

Saludos.
Leo.

Etiquetas: funcion, procedimiento, adaptador
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:32.