Terminal Service p/ Multi User – Windows Vista

2 02UTC Janeiro 02UTC 2009 por sunkabrucks

Todos nós sabemos da preguiça da Microsoft em reescrever códigos e essa é mais uma delas rs.
O windows vista e XP, por serem versões client, só aceitam uma conexão via terminal service por vez, assim forçando empresas a comprarem a versão server para ter tal recurso. Um nerd americado descobriu que essa opção está apenas desativada nos windows client e alterou uma dll fazendo com que possamos nos conectar com vários usuários diferentes em uma mesma máquina, agora podemos utilizar o vista e o xp com várias pessoas conectadas ao mesmo tempo. Segue abaixo um passo a passo de como fazer:


O primeiro passo é baixar o arquivo hackeado para multiuser:
Vista 32Bits: http://rapidshare.com/files/44937685/termsrv_new.dll
Vista 64Bits: http://rapidshare.com/files/44937686/termsrv64.dll


Agora vamos a receita de bolo:
1-São necessários alguns truques para o Windows Vista permitir que vc manipule arquivos de sistema como é o nosso caso. Vá no menu Iniciar e procure o “Prompt de Comando” , clique com o botão direito do mouse e escolha “Executar como Administrador”
2-No prompt digite o seguinte comando: takeown /f C:\Windows\System32\termsrv.dll
3-Agora digite: cacls C:\Windows\System32\termsrv.dll /G USERNAME:f
Onde USERNAME é o nome de usuário com que vc estiver logado.
4-Agora vá ao Windows Explorer em C:\Windows\System32 e procure o arquivo termsrv.dll e renomeio para termsrv.acr
5- Confirme quando o Windows pedir confirmação.
6-Renomeie o arquivo que vc baixou de termsrv_new.dll para termsrv.dll e copie para C:\Windows\System32\


Observações:
Como no Windows XP, no Vista todos os usuários que irão se conectar remotamente terão que ter senhas. Alem disso os usuários que podem fazer acesso remoto devem ser declarados em: Computador >> Configurações Remotas >> Selecionar Usuários…


Vale lembrar que essa dica só funciona para as versões Business e Ultimate do Windows Vista, onde o Remote Desktop monouser ja está disponivel.
Os caras do TheGreenButton estão trabalhando para fazer isso funcionar no Home Premium mas ainda está em teste.

Oracle Básico – Parte 1

9 09UTC Setembro 09UTC 2008 por sunkabrucks

Olaaa, meu objetivo nessa série de post’s é fazer o leitor aprender um pouco sobre pl/sql, mas antes de chegar no pl vou colocar vários exercícios básicos sobre oracle, justamente para outras pessoas como eu que trabalha com Mysql ou outros bancos possam se familiarizar com o oracle, claro que não vou postar como instalar o oracle ou essas coisas, existe 5 trilhões de artigos desses na internet ensinando, vou apenas colocar o arquivos para os senhores preencherem seu banco e poder fazer os exercícios. Entende-se que o leitor já conheça sql e sobre banco de dados em geral.

Bibliografia utilizada: Dominando o Oracle 9i, Modelagem e Desenvolvimento (Totalmente Recomendado).

Primeiro passo:
Criar as tabelas e colocar dados, tudo isso está no script abaixo:

 CREATE TABLE Fornecedor
 (Nr_Fornecedor  Number (4),
   Nm_Fornecedor Varchar2 (50),
   Ds_Endereco  Varchar2 (70),
   Nr_Fone  Number (12),
   Dt_Nascimento Date,
   Ie_Sexo  Char (1),
   Ie_Fisica_Juridica Char (1),
   Cd_Situacao  Number (3));
  
  CREATE TABLE Cliente
  (cd_cliente    number (4),
   nm_cliente    varchar2 (65),
   ds_endereco   varchar2 (50),
   Cd_municipio   number(5),
   Sg_estado     char(2),
   nr_cep     varchar2 (8),
   nr_ddd    number (3),
   nr_fone     number (7),
   Ie_sexo     char(1));
  
 CREATE TABLE Estado_Civil
 (cd_estado_civil  number (1),
  ds_estado_civil  varchar2 (10));

CREATE TABLE Municipio
 (Cd_municipio   Number(5),
  Sg_estado   Char(2),
  Nm_municipio   Varchar2(80));

CREATE TABLE Produto
 (Cd_produto   Number(5),
 Nm_produto   Varchar2(80),
 Nm_popular   Varchar2(40),
 Dt_primeira_aquisicao  Date,
 Vl_custo_medio  Number(10,2),
 Cd_situacao   Number(3),
 Ie_nacional   Char(1),
 Cd_tipo_produto  Number(3));

CREATE TABLE Estado
 (Sg_Estado    char(2),
  Nm_Estado   varchar2 (35));

CREATE TABLE Historico
 (cd_cliente   number (4),
  dt_compra    date,
  vl_compra    number (12,2),
  CONSTRAINT Hst_PK  PRIMARY KEY  (Cd_Cliente, Dt_Compra));

CREATE TABLE Nota_Fiscal
 (Nr_nota   Number(5) CONSTRAINT NF_PK PRIMARY KEY,
  cd_cliente   Number(4) Not Null,
  Dt_emissao   Date Not Null,
  Ie_tipo_nota   Char(1)
  CONSTRAINT NF_CK_Ie_Tipo_Nota CHECK (Ie_Tipo_Nota in (‘C’,'D’)),
  ie_tributada   Char(1)
  CONSTRAINT NF_CK_Ie_Tributada CHECK (Ie_Tributada in (‘S’,'N’))) ;

CREATE TABLE Item_Nota_Fiscal
 (Nr_nota   Number(5),
  Nr_item   Number(2),
  Cd_Produto   Number(5),
  Qt_Produto   Number(13, 3),
  Vl_Unitario   Number(10, 2),
  Ds_Observação  Varchar2(250),
  CONSTRAINT INF_PK PRIMARY KEY (Nr_Nota, Nr_Item),
  CONSTRAINT INF_UK UNIQUE (Nr_Nota, Cd_Produto));

CREATE TABLE Tipo_Produto
 (Cd_tipo_produto  Number(3) CONSTRAINT TpPr_PK PRIMARY KEY,          
  Nm_tipo_produto  Varchar2(30) Not Null);

CREATE TABLE Pais
(Cd_pais   Number(2) CONSTRAINT PAIS_PK PRIMARY KEY,
 Nm_pais    Varchar2(45) CONSTRAINT PAIS_UK UNIQUE,
 Ds_nacionalidade   Varchar2(35)) ;

CREATE TABLE Empresa
 (Cd_empresa   Number(2) CONSTRAINT EMP_PK PRIMARY KEY,
  Nm_empresa   Varchar2(30) Not Null,
  Nr_CGC   Number(15) CONSTRAINT EMP_UK UNIQUE);
 
 
CREATE TABLE Filial
 (Cd_empresa   Number(2),
  Cd_filial   Number(2),
  Nm_filial   Varchar2(25) Not Null,
  CONSTRAINT FL_PK PRIMARY KEY (Cd_Empresa, Cd_Filial),
  CONSTRAINT FL_FK_EMP
  FOREIGN KEY (Cd_Empresa)
  REFERENCES Empresa (Cd_Empresa));

ALTER TABLE  Cliente
ADD (Ie_Fisica_Juridica Char (1));

ALTER TABLE  Fornecedor
MODIFY (Ds_Endereco  Varchar2 (50));

ALTER TABLE  Cliente
ADD (CONSTRAINT Cli_CK_FisJur
CHECK (Ie_Fisica_Juridica in (‘S’,'N’)) );

ALTER TABLE  Empresa
DISABLE CONSTRAINT EMP_UK;

ALTER TABLE  Pais
DROP CONSTRAINT Pais_UK;

ALTER TABLE Fornecedor
Add Constraint Forn_PK PRIMARY KEY (Nr_Fornecedor);

ALTER TABLE Cliente
Add Constraint Cli_PK PRIMARY KEY (Cd_Cliente);

ALTER TABLE Estado_Civil
Add Constraint EstCiv_PK PRIMARY KEY (Cd_Estado_Civil);

ALTER TABLE Cliente
Add (Cd_Estado_Civil Number(1));

ALTER TABLE Cliente
Add  CONSTRAINT Cli_FK_EstCiv
 FOREIGN KEY (Cd_Estado_Civil)
 REFERENCES Estado_Civil (Cd_Estado_Civil);

ALTER TABLE Fornecedor
Add (Cd_Pais  Number(2),
Sg_Estado  Char(2),
Cd_Municipio  Number(5));

ALTER TABLE Cliente
Add (Cd_Pais  Number(2));

ALTER TABLE Estado
Add (Cd_Pais  Number(2));

ALTER TABLE Municipio
Add (Cd_Pais  Number(2));

ALTER TABLE Estado
Add Constraint Est_PK primary key (Sg_Estado);

ALTER TABLE Municipio
Add  CONSTRAINT Mun_FK_Est
 FOREIGN KEY (Sg_Estado)
 REFERENCES Estado (Sg_Estado);

ALTER TABLE Estado
Add  CONSTRAINT Est_FK_Pais
 FOREIGN KEY (Cd_Pais)
 REFERENCES Pais (Cd_Pais);

INSERT INTO  Pais
(cd_pais, nm_pais)
VALUES
(1, ‘Brasil’);

INSERT INTO  Pais
(cd_pais, nm_pais, ds_nacionalidade)
VALUES
 (2,’Argentina’, null);

INSERT INTO  Pais
VALUES
 (3,’Chile’, ‘Chilena’);

INSERT INTO  Pais
 (cd_pais, nm_pais, ds_nacionalidade)
VALUES
 (&Codigo,’&Nome’, ‘&Nacionalidade’);

 INSERT INTO Estado_Civil
 VALUES
  (1, ‘Solteiro’);
 INSERT INTO Estado_Civil
 VALUES
 (2,’Casado’);
 INSERT INTO Estado_Civil
 VALUES
 (3,’Viúvo’);
 INSERT INTO Estado_Civil
 VALUES
(4,’Separado’);
 INSERT INTO Estado_Civil
 VALUES
(5,’Divorciado’);

 INSERT INTO Pais
 (Cd_Pais, Nm_Pais, Ds_Nacionalidade)
 VALUES
  (5, ‘Egito’,  ’Egípcia’);
 INSERT INTO Pais
 (Cd_Pais, Nm_Pais, Ds_Nacionalidade)
 VALUES
  (6, ‘Líbano’, ‘Libanesa’);
 INSERT INTO Pais
 (Cd_Pais, Nm_Pais, Ds_Nacionalidade)
 VALUES
  (7, ‘Arábia’, ‘Árabe’);
 INSERT INTO Pais
 (Cd_Pais, Nm_Pais, Ds_Nacionalidade)
 VALUES
  (8, ‘Turquia’, Null);
 INSERT INTO Pais
 (Cd_Pais, Nm_Pais, Ds_Nacionalidade)
 VALUES
  (9, ‘China’, ‘Chinesa’);
 INSERT INTO Pais
 (Cd_Pais, Nm_Pais, Ds_Nacionalidade)
 VALUES
  (10, ‘Japão’, ‘Japonesa’);
 INSERT INTO Pais
 (Cd_Pais, Nm_Pais, Ds_Nacionalidade)
 VALUES
  (11, ‘Bélgica’, ‘Belga’);
 INSERT INTO Pais
 (Cd_Pais, Nm_Pais, Ds_Nacionalidade)
 VALUES
  (12, ‘Peru’, Null);
 INSERT INTO Pais
 (Cd_Pais, Nm_Pais, Ds_Nacionalidade)
 VALUES
  (13, ‘Venezuela’, Null);
 INSERT INTO Pais
 (Cd_Pais, Nm_Pais, Ds_Nacionalidade)
 VALUES
  (14, ‘Colômbia’, Null);
INSERT INTO Estado
VALUES
(‘SC’, ‘Santa Catarina’,1);
INSERT INTO Estado
VALUES
(‘PR’, ‘Paraná’,1);
INSERT INTO Estado
VALUES
(‘RS’, ‘Rio Grande do Sul’,1);
INSERT INTO Municipio
VALUES
(1, ‘SC’, ‘Bal.Camboriú’, 1);
INSERT INTO Municipio
VALUES
(2,’SC’, ‘Blumenau’, 1);
INSERT INTO Municipio
VALUES
(3,’SC’, ‘Florianópolis’, 1);
INSERT INTO Municipio
VALUES
(4,’SC’, ‘Criciúma’, 1);
INSERT INTO Municipio
VALUES
(5,’PR’, ‘Curitiba’, 1);
INSERT INTO Municipio
VALUES
(6,’PR’, ‘Ponta Grossa’, 1);
INSERT INTO Cliente
(CD_CLIENTE, NM_CLIENTE, DS_ENDERECO, CD_MUNICIPIO,
  SG_ESTADO, NR_CEP, NR_DDD, NR_FONE, IE_SEXO,
  IE_FISICA_JURIDICA, CD_ESTADO_CIVIL, CD_PAIS)
VALUES
(1, ‘Damaris Fanderuff’, ‘Teste Endereço’, 1,
 ’SC’, ‘88330000′, 047, 9853308, ‘F’,
 ’S', 5,1);
INSERT INTO Cliente
(CD_CLIENTE, NM_CLIENTE, DS_ENDERECO, CD_MUNICIPIO,
  SG_ESTADO, NR_CEP, NR_DDD, NR_FONE, IE_SEXO,
  IE_FISICA_JURIDICA, CD_ESTADO_CIVIL, CD_PAIS)
VALUES
(2, ‘ José da Silva’, ‘Rua Joinville, 380′, 4,
 ’SC’, ‘88000000′, 048, 9899898, ‘M’,
 ’S', 1,1);
INSERT INTO Cliente
(CD_CLIENTE, NM_CLIENTE, DS_ENDERECO, CD_MUNICIPIO,
  SG_ESTADO, NR_CEP, NR_DDD, NR_FONE, IE_SEXO,
  IE_FISICA_JURIDICA, CD_ESTADO_CIVIL, CD_PAIS)
VALUES
(3, ‘ Maria Aparecida Mafra’, ‘Rodovia Osvaldo Reis, s.n.’, 3,
 ’SC’, Null, 048, 3225666, ‘F’,
 ’S', 3,1);
INSERT INTO Cliente
(CD_CLIENTE, NM_CLIENTE, DS_ENDERECO, CD_MUNICIPIO,
  SG_ESTADO, NR_CEP, NR_DDD, NR_FONE, IE_SEXO,
  IE_FISICA_JURIDICA, CD_ESTADO_CIVIL, CD_PAIS)
VALUES
(4, ‘ Marlene Maria Maia’, ‘BR 470 KM 25′, 5,
 ’PR’, Null, 041, 2311123, ‘F’,
 ’S', 5,1);
INSERT INTO Fornecedor
(NR_FORNECEDOR , NM_FORNECEDOR, CD_MUNICIPIO,
SG_ESTADO, DS_ENDERECO, NR_FONE, DT_NASCIMENTO,
IE_FISICA_JURIDICA)
VALUES
(1, ‘Damaris Fanderuff’, 1,
 ’SC’, ‘Teste Endereço’ , 9853308, ‘26/04/74′,
 ’S');
INSERT INTO Fornecedor
(NR_FORNECEDOR , NM_FORNECEDOR, CD_MUNICIPIO,
SG_ESTADO, DS_ENDERECO, NR_FONE, DT_NASCIMENTO,
IE_FISICA_JURIDICA)
VALUES
(2, ‘Ana Maria de Jesus’, 2,
 ’SC’, ‘Teste Endereço 2′ , 9639633, ‘30/09/67′,
 ’S');
INSERT INTO Fornecedor
(NR_FORNECEDOR , NM_FORNECEDOR, CD_MUNICIPIO,
SG_ESTADO, DS_ENDERECO, NR_FONE, DT_NASCIMENTO,
IE_FISICA_JURIDICA)
VALUES
(3, ‘José Pacheco de Alcantara’, 4,
 ’SC’, ‘Avenida Teste Endereço 3′ , 9739679, ‘16/11/77′,
 ’S');
INSERT INTO Fornecedor
(NR_FORNECEDOR , NM_FORNECEDOR, CD_MUNICIPIO,
SG_ESTADO, DS_ENDERECO, NR_FONE, DT_NASCIMENTO,
IE_FISICA_JURIDICA)
VALUES
(4, ‘Luis Gustavo Antonielle’, 5,
 ’PR’, ‘Teste Endereço 4′ , 9850000, ‘20/06/70′,
 ’N');
INSERT INTO Fornecedor
(NR_FORNECEDOR , NM_FORNECEDOR, CD_MUNICIPIO,
SG_ESTADO, DS_ENDERECO, NR_FONE, DT_NASCIMENTO,
IE_FISICA_JURIDICA)
VALUES
(5, ‘Marli MAra Maria’, 6,
 ’PR’, ‘Avenida Teste Endereço 5′ , 4443322, ‘07/06/64′,
 ’S');
insert into produto
(CD_PRODUTO, NM_PRODUTO, DT_PRIMEIRA_AQUISICAO, VL_CUSTO_MEDIO)
values
(1,’Margarina Delicia’,sysdate, 1.5);
insert into produto
(CD_PRODUTO, NM_PRODUTO, DT_PRIMEIRA_AQUISICAO, VL_CUSTO_MEDIO)
values
(2,’Ninho Soleil’, sysdate-30, 2.3);
insert into produto
(CD_PRODUTO, NM_PRODUTO, DT_PRIMEIRA_AQUISICAO, VL_CUSTO_MEDIO)
values
(3,’Batavo Ameixa/Fibras’, sysdate-22, .65);
insert into produto
(CD_PRODUTO, NM_PRODUTO, DT_PRIMEIRA_AQUISICAO, VL_CUSTO_MEDIO)
values
(4,’Danoninho’, sysdate-45,3.12);
insert into produto
(CD_PRODUTO, NM_PRODUTO, DT_PRIMEIRA_AQUISICAO,
 VL_CUSTO_MEDIO)
values
(5, ‘Chandelle Chocolate’, TO_DATE(‘20/04/1998′,’dd/mm/yyyy’), 1.5);
 insert into nota_fiscal
 (NR_NOTA, CD_CLIENTE, DT_EMISSAO, IE_TIPO_NOTA, IE_TRIBUTADA)
 VALUES
 (1000, 1, sysdate, ‘C’, ‘S’);
 insert into nota_fiscal
 (NR_NOTA, CD_CLIENTE, DT_EMISSAO, IE_TIPO_NOTA, IE_TRIBUTADA)
 VALUES
 (1001, 2, sysdate – 3, ‘C’, ‘S’);
 insert into nota_fiscal
 (NR_NOTA, CD_CLIENTE, DT_EMISSAO, IE_TIPO_NOTA, IE_TRIBUTADA)
 VALUES
 (1002, 3, sysdate – 15, ‘D’, ‘S’);
 insert into nota_fiscal
 (NR_NOTA, CD_CLIENTE, DT_EMISSAO, IE_TIPO_NOTA, IE_TRIBUTADA)
 VALUES
 (1003, 3, sysdate -24, ‘C’, ‘N’);
 insert into nota_fiscal
 (NR_NOTA, CD_CLIENTE, DT_EMISSAO, IE_TIPO_NOTA, IE_TRIBUTADA)
 VALUES
 (1004, 6, sysdate – 30, ‘C’,'S’);
 insert into nota_fiscal
 (NR_NOTA, CD_CLIENTE, DT_EMISSAO, IE_TIPO_NOTA, IE_TRIBUTADA)
 VALUES
 (1005,6, sysdate-10, ‘C’, ‘N’);
 insert into nota_fiscal
 (NR_NOTA, CD_CLIENTE, DT_EMISSAO, IE_TIPO_NOTA, IE_TRIBUTADA)
 VALUES
 (1006, 6, sysdate-45, ‘C’,'S’);
 insert into nota_fiscal
 (NR_NOTA, CD_CLIENTE, DT_EMISSAO, IE_TIPO_NOTA, IE_TRIBUTADA)
 VALUES
 (1007, 1, sysdate-11, ‘D’, ‘S’);
 insert into nota_fiscal
 (NR_NOTA, CD_CLIENTE, DT_EMISSAO, IE_TIPO_NOTA, IE_TRIBUTADA)
 VALUES
 (1008, 1, sysdate-23, ‘C’, ‘S’);
 insert into nota_fiscal
 (NR_NOTA, CD_CLIENTE, DT_EMISSAO, IE_TIPO_NOTA, IE_TRIBUTADA)
 VALUES
 (1009, 1, sysdate-21, ‘C’, ‘S’);
insert into item_nota_fiscal
(NR_NOTA, NR_ITEM, CD_PRODUTO, QT_PRODUTO, VL_UNITARIO)
VALUES
(1000, 1, 1, 2, 1.2);
insert into item_nota_fiscal
(NR_NOTA, NR_ITEM, CD_PRODUTO, QT_PRODUTO, VL_UNITARIO)
VALUES
(1000, 2, 2, 5, 2.1);
insert into item_nota_fiscal
(NR_NOTA, NR_ITEM, CD_PRODUTO, QT_PRODUTO, VL_UNITARIO)
VALUES
(1001, 1, 3, 10, 1.32);
insert into item_nota_fiscal
(NR_NOTA, NR_ITEM, CD_PRODUTO, QT_PRODUTO, VL_UNITARIO)
VALUES
(1002, 1, 4, 20, 1);
insert into item_nota_fiscal
(NR_NOTA, NR_ITEM, CD_PRODUTO, QT_PRODUTO, VL_UNITARIO)
VALUES
(1002, 2, 3, 15, 1.12);
insert into item_nota_fiscal
(NR_NOTA, NR_ITEM, CD_PRODUTO, QT_PRODUTO, VL_UNITARIO)
VALUES
(1002, 3, 5, 1, 2.1);
insert into item_nota_fiscal
(NR_NOTA, NR_ITEM, CD_PRODUTO, QT_PRODUTO, VL_UNITARIO)
VALUES
(1003, 1, 2, 50, 1.7);
insert into item_nota_fiscal
(NR_NOTA, NR_ITEM, CD_PRODUTO, QT_PRODUTO, VL_UNITARIO)
VALUES
(1003, 2, 1, 21, 1.2);
insert into item_nota_fiscal
(NR_NOTA, NR_ITEM, CD_PRODUTO, QT_PRODUTO, VL_UNITARIO)
VALUES
(1003, 3, 3, 30, 1.26);
insert into item_nota_fiscal
(NR_NOTA, NR_ITEM, CD_PRODUTO, QT_PRODUTO, VL_UNITARIO)
VALUES
(1003, 4, 5, 10, 2.56);
insert into item_nota_fiscal
(NR_NOTA, NR_ITEM, CD_PRODUTO, QT_PRODUTO, VL_UNITARIO)
VALUES
(1003, 5, 4, 2, 2.45);
insert into item_nota_fiscal
(NR_NOTA, NR_ITEM, CD_PRODUTO, QT_PRODUTO, VL_UNITARIO)
VALUES
(1004, 1, 4, 45, 3);
insert into item_nota_fiscal
(NR_NOTA, NR_ITEM, CD_PRODUTO, QT_PRODUTO, VL_UNITARIO)
VALUES
(1004,2,3, 5, 1);
insert into item_nota_fiscal
(NR_NOTA, NR_ITEM, CD_PRODUTO, QT_PRODUTO, VL_UNITARIO)
VALUES
(1004, 3, 1, 5, 1.8);
insert into item_nota_fiscal
(NR_NOTA, NR_ITEM, CD_PRODUTO, QT_PRODUTO, VL_UNITARIO)
VALUES
(1005, 1, 2, 6, 2.44);
insert into item_nota_fiscal
(NR_NOTA, NR_ITEM, CD_PRODUTO, QT_PRODUTO, VL_UNITARIO)
VALUES
(1005, 2, 5, 4, 1.89);
insert into item_nota_fiscal
(NR_NOTA, NR_ITEM, CD_PRODUTO, QT_PRODUTO, VL_UNITARIO)
VALUES
(1005, 3, 4, 24, 3.11);
insert into item_nota_fiscal
(NR_NOTA, NR_ITEM, CD_PRODUTO, QT_PRODUTO, VL_UNITARIO)
VALUES
(1006, 1, 3, 66, .8);
insert into item_nota_fiscal
(NR_NOTA, NR_ITEM, CD_PRODUTO, QT_PRODUTO, VL_UNITARIO)
VALUES
(1007, 1, 4, 100, 4.5);
insert into item_nota_fiscal
(NR_NOTA, NR_ITEM, CD_PRODUTO, QT_PRODUTO, VL_UNITARIO)
VALUES
(1007, 2, 3, 225, .9);
insert into item_nota_fiscal
(NR_NOTA, NR_ITEM, CD_PRODUTO, QT_PRODUTO, VL_UNITARIO)
VALUES
(1007, 3, 5, 45, 1.9);
insert into item_nota_fiscal
(NR_NOTA, NR_ITEM, CD_PRODUTO, QT_PRODUTO, VL_UNITARIO)
VALUES
(1007, 4, 1, 56, 1.7);
insert into item_nota_fiscal
(NR_NOTA, NR_ITEM, CD_PRODUTO, QT_PRODUTO, VL_UNITARIO)
VALUES
(1008, 1, 2, 20, 2.5);
insert into item_nota_fiscal
(NR_NOTA, NR_ITEM, CD_PRODUTO, QT_PRODUTO, VL_UNITARIO)
VALUES
(1008, 2, 3, 2, 1);
insert into item_nota_fiscal
(NR_NOTA, NR_ITEM, CD_PRODUTO, QT_PRODUTO, VL_UNITARIO)
VALUES
(1009, 1, 4, 5, 5);
 insert into empresa
 (cd_empresa, nm_empresa, nr_cgc)
 values
 (1, ‘Super empresa 1′, 123456789);
commit;

2° Passo:
Estudar os exercícios abaixo, façam variações utilizando as funções abaixo utilizadas

“>
1) Selecionar, da tabela Cliente, na coluna nm_cliente, o número de caracteres que este nome possui e a posição em que aparece a primeira letra ‘A’ do nome, independentemente de essa letra estar em maiúsculo ou minúsculo.
R: SELECT
 NM_CLIENTE,
 LENGTH(NM_CLIENTE),
 INSTR(UPPER(NM_CLIENTE), ‘A’)
   FROM
 CLIENTE

2) Selecionar, da tabela Produto, o nome do produto e o seu custo médio, de modo que apareça com duas casas decimais e pelo menos uma casa inteira.
R: SELECT
 NM_PRODUTO “NOME”,
 TO_CHAR(VL_CUSTO_MEDIO, ‘9,990.99′) CUSTO_MEDIO
   FROM
 PRODUTO

3) Selecionar o nome do fornecedor, o mês e o ano do seu nascimento, o número de dias transcorridos entre a data de nascimento e o final do ano em que nasceu e o número inteiro de meses entre a sua data de nascimento e o primeiro dia do ano 2000.
R: SELECT
 NM_FORNECEDOR “NOME DO FORNECEDOR”,
 TO_CHAR(DT_NASCIMENTO, ‘MM/YYYY’) “MES_ANO”,
 TO_DATE(‘31/12/’ || TO_CHAR(DT_NASCIMENTO, ‘YYYY’), ‘DD/MM/YYYY’) – DT_NASCIMENTO “DATA_NASCIMENTO_DATA_FINAL”,
 TRUNC(MONTHS_BETWEEN(TO_DATE(‘01/01/2000′, ‘DD/MM/YYYY’), DT_NASCIMENTO), 0)  “QUANTIDADE_MESES”
   FROM
 FORNECEDOR

4) Selecionar, da tabela PRODUTO, os produtos e o total de meses(número inteiro arredondado para maior) desde que ele foi adquirido pela primeira vez.
R: SELECT
     NM_PRODUTO,
     CEIL(MONTHS_BETWEEN(SYSDATE, DT_PRIMEIRA_AQUISICAO)) “QUANTIDADE_MESES”
FROM
     PRODUTO

5) Selecionar o nome do cliente e a frase “Cliente Nacional” se seu país for o Brasil e “Importador” caso não seja.
R: SELECT
    NM_CLIENTE,
    DECODE(CD_PAIS, 1, ‘CLIENTE NACIONAL’, ‘IMPORTADOR’)
FROM
    CLIENTE

Windows PowerShell – Replace de Caractere

4 04UTC Setembro 04UTC 2008 por sunkabrucks

Problema: Alguns arquivos arquivos que tenho são carregados diariamente em um servidor Sql Server 2005, mas esses arquivos estão vindo de outro lugar com o sinal de “+” na frente de alguns campos numérios e assim a carga desses arquivos está dando erro.

Possível Solução 1: O óbvio!!! Alterar o programa que da a carga, editando esse arquivo e tirando esse caracter inválido. Mas como nem tudo é fácil na área de TI não posso fazer isso, o programa que da a carga é um .exe e não querem alterar ele(custos rs).

Possível Solução 2: Vamos então pedir pra quem gera esse arquivo parar de gerar esse indivíduo errado!!! Massssss o problema chamado “custo” aparece.

Solução feita: Após consultar alguns profissionais resolvi usar o Microsoft PowerShell, nunca o tinha usado mas achei muito interessante, com ele conseguimos usar rotinas tipo sh do unix no windows com boa velocidade, a ferramenta é gratuíta!!! O aprendizado dele é fácil e requer pouco tempo, basta algumas consultar no google com “PowerShell tutorial” que vão achar bastante coisa. Voltando para o assunto principal, vou escrever abaixo o scritp comentado o que foi desenvolvido:

 # Função que da o famoso replace.

# No find se coloca a string que se quer procurar.

# No replace coloca-se a string que quer trocar pelo que achou no find.

# No includes coloca-se o diretório com o nome do arquivo.

function Replace-String($find, $replace, $includes)

{

    get-childitem $includes | select-string $find -list |

    % { (get-content $_.Path) |

    % { $_ -replace $find, $replace } |

    set-content $_.Path }

 

} 

 

# $args = é o argumento que é passado quando chama esse programa.

# $args.length = o tamanho desse args, pois posso passar mais de um argumento, é criado um array de args.

# Se $args.length for diferente de 0 faça:

if ($args.length -gt 0)   

{    

   # Recebe o primeiro argumento, que no caso é o diretório com o arquivo, ex: c:\arquivoTeste.txt

   $arquivo = $args[0];

  

   # apenas escreve na tela

   “Foi passado o nome do arquivo”;

  

   # Se esse arquivo existe

   if (Test-Path $arquivo)

       {

           “Arquivo existe”

          

           # Crio um arquivo temporário pq pode acontecer de o servidor cair no meio do processo ou algo do tipo

           $temporaria = $arquivo + “TMP”;

          

           # Fácil de entender, copia o arquivo e cola ele com o nome do temporário que foi definido acima.

           Copy-Item $arquivo $temporaria;

          

           “Arquivo temporário criado com sucesso”

          

           # Chama nossa função passando os parâmetros necessários, Obs: todos os parâmetros são separados por espaço.

           # O barra \+ é um caracter de scape pois se for passar só o caractere “+” ele vai pensar que vai somar algo.

           Replace-String “\+” “0″ “$arquivo”;

          

           “Retirada dos caracteres finalizada com sucesso”

          

           # Remove o arquivo temporário

           Remove-Item $temporaria;

          

           “Arquivo temporário removido com sucesso”

       }

       else

       {

           “Arquivo não existe”

    }

}else {

   Write-Host “Não foi passado o nome do arquivo”;

}

OBS1: Todos os arquivos PowerShell tem que estar com a extenção .ps1

OBS2: Quando instalamos o PowerShell ele não vem com permissão para executar script então temos que executar o seguinte comando no prompt do PowerShell:

Set-Executionpolicy remotesigned

OBS3: Caso queira executar os scripts powershell no prompt normal do windows user o seguinte comando:

powershell.exe -noexit <programa>

 

No caso do nosso exemplo:

 

powershell.exe -noexit <end_do_script> <end_do_arquivo>

 

 

Acabouuu!!! Quem tiver dúvidas só mandar comentários que respondo assim que puder, Obrigado!!!

Meu primeiro Ola Mundo

4 04UTC Setembro 04UTC 2008 por sunkabrucks

Ola pessoal, ou eu mesmo, pois acredito que eu apenas vou ler o que vou escrever rs, mas é isso, criei esse blog com o objetivo de compartilhar informações e também arquivar de forma organizada as mesmas, trabalho na área de informática, sou analista de sistemas e tenho novos desafios diariamente e assim o aprendizado é constante, vou tentar ao máximo postar resoluções de problemas que tive e até pequenos tutoriais sobre diversos assuntos para pessoas iniciantes e de nível intermediário(espero quem sabe algum dia postar informações para profissionais especializados, quem sabe ? rs)

Bom é isso, espero que gostem e sejam bem vindos!!!