Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/09/2010, 23:17
kind
 
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.