Arvixe Web Hosting = Hospedagem Windows + Sql Server ilimitado por menos de 9 reais

Category : Destaque, Propaganda

A Arvixe é uma empresa de hospedagem web, com sede em Santa Rosa, EUA.

Com 5 dólares por mês (R$ 8,50), é possível ter um host muito bom, com vários serviços ilitados. Entre outras coisas, a Arvixe possuí:

SQL Server ilimitado
MySQL ilimitado
Contas FTP ilimitada
Espaço em disco ilimitado
Transferencia ilitada
Dominios 6
Sub dominio ilimitado
Caixa de email ilimitado
Streaming de audio e vídeo

Na maioria (se não, todas) dos serviços de hospedagem nacional, é necessário pagar um adicional para ter isso ilimitado

Apesar de ser no Estados Unidos, pode ser feito pagamento por Paypal ou Google Checkout, o que torna muito fácil, seguro e NÃO PRECISA de cartão de crédito internacional.

O atendimento é muito eficiente. Eu precisei do suporte para resolver um problema e fui muito bem atendido. 

A Arvixe tem a hospedagem e suporte muito melhor do que a maioria das hospedagens do Brasil. Com toda essa facilidade e qualidade, vai contratar hospedagem nacional por que?

 

Sql Server: Converter números para extenso (Atualizado)

2

Category : Desenvolvimento, Destaque, SQL Server

Converte números para extenso entre 0 e 999999999.99.

O código abaixo retorna o número por extenso no formato Real (R$). Para usar outros tipos, é só mudar o texto na última FUNCTION [dbo].[NExtenso].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
CREATE FUNCTION [dbo].[NExtenso_Extenso](@Num INTEGER)
	RETURNS VARCHAR(50)
AS
BEGIN 
	-- Por Ycaro Afonso 03/12/2011
	-- V 0.1
	RETURN CASE @Num 
		WHEN 1000 THEN 'Mil' WHEN 1000000 THEN 'Milhões' WHEN 1000000000 THEN 'Bilhões'
		WHEN 100 THEN 'Cento' WHEN 200 THEN 'Duzentos' WHEN 300 THEN 'Trezentos' WHEN 400 THEN 'Quatrocentos' WHEN 500 THEN 'Quinhentos' WHEN 600 THEN 'Seiscentos' WHEN 700 THEN 'Setecentos' WHEN 800 THEN 'Oitocentos' WHEN 900 THEN 'Novecentos'
		WHEN 10 THEN 'Dez' WHEN 11 THEN 'Onze' WHEN 12 THEN 'Doze' WHEN 13 THEN 'Treze' WHEN 14 THEN 'Quartorze' WHEN 15 THEN 'Quinze' WHEN 16 THEN 'Dezesseis' WHEN 17 THEN 'Dezesete' WHEN 18 THEN 'Dezoito' WHEN 19 THEN 'Dezenove'
		WHEN 20 THEN 'Vinte' WHEN 30 THEN 'Trinta' WHEN 40 THEN 'Quarenta' WHEN 50 THEN 'Cinquenta' WHEN 60 THEN 'Sessenta' WHEN 70 THEN 'Setenta' WHEN 80 THEN 'Oitenta' WHEN 90 THEN 'Noventa' 
		WHEN 1 THEN 'Um' WHEN 2 THEN 'Dois' WHEN 3 THEN 'Tres' WHEN 4 THEN 'Quatro' WHEN 5 THEN 'Cinco' WHEN 6 THEN 'Seis' WHEN 7 THEN 'Sete' WHEN 8 THEN 'Oito' WHEN 9 THEN 'Nove' 
		ELSE NULL END
END
GO
 
CREATE FUNCTION [dbo].[NExtenso_Fator](@Num INTEGER)
	RETURNS INTEGER
AS
BEGIN 
	-- Por Ycaro Afonso 03/12/2011
	-- V 0.1
	IF @Num < 10 RETURN 1
	ELSE IF @Num < 100 RETURN 10
	ELSE IF @Num < 1000 RETURN 100
	ELSE IF @Num < 1000000 RETURN 1000
	ELSE IF @Num < 1000000000 RETURN 1000000
	ELSE IF @Num < 1000000000000 RETURN 1000000000
	RETURN NULL
END
GO
 
CREATE FUNCTION [dbo].[NExtenso_Convert](@Num DECIMAL(18, 6), @Fat DECIMAL(18, 6))
	RETURNS VARCHAR(1000)
AS 
BEGIN 
	-- Por Ycaro Afonso 03/12/2011
	-- V 0.1
	DECLARE @Ret VARCHAR(1000), @_Num DECIMAL(18, 6)
	SET @Ret = ''
	SET @_Num = 0
 
	IF @Fat > 0 BEGIN 
		IF @Num = 1000000000 BEGIN 
			SET @Ret = @Ret + ' Um Bilhão'
		END ELSE IF @Num = 1000000 BEGIN 
			SET @Ret = @Ret + ' Um Milhão'
		END ELSE IF @Num = 1000 BEGIN 
			SET @Ret = @Ret + ' Um Mil'
		END ELSE IF @Num = 100 BEGIN 
			SET @Ret = @Ret + 'Cem'
		END ELSE IF @Num > 10 AND @Num < 20 BEGIN
			SET @Ret = @Ret + ISNULL(dbo.NExtenso_Extenso(@Num) + ' e ', '')
		END ELSE BEGIN 
			IF @Fat >= 1000 BEGIN 
				SET @_Num = CAST((@Num - (@Num % @Fat)) * (CAST(1 AS DECIMAL(18, 6)) / @Fat) AS INTEGER)
 
				IF @_Num = 1 BEGIN 
					SET @Ret = @Ret + ISNULL(dbo.NExtenso_Convert(@Fat, @Fat * .1), '')
				END ELSE BEGIN 
					SET @Ret = @Ret + ISNULL(dbo.NExtenso_Convert(@_Num, dbo.NExtenso_Fator(@_Num)), '') + ' ' + ISNULL(dbo.NExtenso_Extenso(@Fat), '')
				END 
 
				SET @_Num = @Num - (@_Num * @Fat)
 
				SET @Fat = dbo.NExtenso_Fator(@_Num)
 
				SET @Ret = @Ret + CASE WHEN (@Fat > 100 OR @Fat < 100) AND CAST((@_Num - (@_Num % @Fat)) * (CAST(1 AS DECIMAL(18, 6)) / @Fat) AS INTEGER) < 100 THEN ' e ' ELSE ', ' END + ISNULL(dbo.NExtenso_Convert(@_Num, @Fat), '')
			END ELSE BEGIN 
				SET @_Num = @Num - (@Num % @Fat)
				SET @Ret = @Ret + ISNULL(dbo.NExtenso_Extenso(@_Num) + ' e ', '') + dbo.NExtenso_Convert(@Num - @_Num, @Fat * .1)
			END 
		END
	END 
	RETURN REPLACE(REPLACE(@Ret + '.', ' e .', ''), '.', '')
END
GO 
 
CREATE FUNCTION [dbo].[NExtenso](@Num DECIMAL(15, 2))
	RETURNS VARCHAR(1000)
AS 
BEGIN 
	-- Por Ycaro Afonso 03/12/2011
	-- V 0.4
	DECLARE @Ret VARCHAR(500)
	IF @Num > 0 BEGIN 
 
		SET @Ret = ''
		SET @Ret = dbo.NExtenso_Convert(@Num, dbo.NExtenso_Fator(@Num)) + 
			CASE FLOOR(@Num) WHEN 0 THEN '' WHEN 1 THEN ' Real' ELSE ' Reais' END + 
			CASE FLOOR(@Num) WHEN 0 THEN '' ELSE ' e ' END
 
		SET @Num = @Num - FLOOR(@Num) 
		IF @Num > 0 BEGIN 
			--WHILE @Num - FLOOR(@Num) > 0 BEGIN
			--	SET @Num = @Num / .1
			--END 
 
			SET @Num = REPLACE(CAST(@Num AS VARCHAR(20)), '0.', '')
 
			SET @Ret = @Ret + dbo.NExtenso_Convert(@Num, dbo.NExtenso_Fator(@Num)) + CASE @Num WHEN 1 THEN ' Centavo' ELSE ' Centavos' END
		END
	END ELSE BEGIN
		SET @Ret = 'Zero Reais'
	END
	RETURN @Ret
END 
GO
 
-- Exemplo 
SELECT dbo.NExtenso(0)