none
Tabela Temporaria RRS feed

  • Pergunta

  • Galera estou criando uma tabela temporaria da seguinte maneira:

    drop table #teste

    CREATE TABLE #teste

    (

    SecurityIDType char(1),

    ContryIncorp char(2),

    CountryList char(2),

    FidPosition char(1)

    )

    DECLARE

    @SecurityIDType as char(1),

    @ContryIncorp as char(2),

    @CountryList as char(2),

    @FidPosition as char(1),

    @dtOperation as varchar(8),

    @stockCode as varchar(10)

     

    SET @SecurityIDType = 'I';

    SET @ContryIncorp = 'BR';

    SET @CountryList = 'BR';

    SET @FidPosition = 'N';

    SET @dtOperation = '20081202';

     

    -- Ativos na carteira

    SELECT

    stock.Stockid,

    Stock.Available,

    stock.AccountId AS Carrying,

    enti.Name,

    @SecurityIDType AS SecurityIDType,

    @ContryIncorp AS ContryIncorp,

    @CountryList AS CountryList,

    @FidPosition AS FidPosition

    FROM Account AS acc

    LEFT JOIN Entity AS enti ON

    acc.EntityId = enti.id

    LEFT JOIN StockShare AS stock ON

    stock.AccountId = acc.id

    LEFT JOIN company AS comp ON

    comp.id = stock.Stockid

    WHERE stock.date = @dtOperation

    group by stock.Stockid,

    stock.Available,

    stock.AccountId,

    enti.Name

    INSERT INTO #TESTE VALUES(@SecurityIDType,@ContryIncorp, @CountryList, @FidPosition )

    select * from #TESTE;

     

    Como eu faço para incluir meu campos de retorno do meu select na minha tabela temporaria?

     

    Obrigado

     

    quinta-feira, 4 de dezembro de 2008 18:00

Respostas

  • Olá SirSmart,

     

    Coloque-as na criação da tabela temporária.

     

    CREATE TABLE #teste

    (

    StockID Tipo,

    Available Tipo,

    Carryin Tipo,

    Name Tipo,

    SecurityIDType char(1),

    ContryIncorp char(2),

    CountryList char(2),

    FidPosition char(1)

    )

     

    Depois é só executar o INSERT exatamente da mesma forma que você já está fazendo contemplando todas as colunas na declaração de campos e no SELECT.

     

    [ ]s,

     

    Gustavo

    quinta-feira, 4 de dezembro de 2008 18:18

Todas as Respostas

  • Olá SirSmart,

     

    Você deve criar a tabela temporária com todos os campos necessários e posteriormente montar a sua instrução INSERT com todos os campos desejados.

     

    [ ]s,

     

    Gustavo

     

    quinta-feira, 4 de dezembro de 2008 18:04
  • SirSmart,

     

     

    Você já tentou assim:

     

    Code Snippet

    INSERT INTO #TESTE

    select * from #TESTE;

     

     

     

    quinta-feira, 4 de dezembro de 2008 18:05
  • Então gente eu queria pegar os valores do seu select :

    stock.Stockid,

    Stock.Available,

    stock.AccountId AS Carrying,

    enti.Name,

     

    E gravar na tabela temporaria tb.

     

    Hj só estou gravando as informações das variaveis que declarei, porem preciso pegar o retorno do select e inserir tb..

     

    Tem como fazer isso?

     

    Obrigado

    quinta-feira, 4 de dezembro de 2008 18:09
  • SirSmart,

     

    Veja este exemplo:

     

    Code Snippet

    Create Table #Teste

    (Codigo Int Identity(1,1),

     Descricao Varchar(100) default 'teste')

     

    Insert Into #Teste Default Values

    Insert Into #Teste Default Values

    Insert Into #Teste Default Values

     

    Create Table #Teste1

    (Codigo Int Identity(1,1),

    Descricao Varchar(100) default 'teste')

     

    Insert Into #Teste1

    Select Descricao from #Teste

     

    Select * from #Teste1

     

     

    quinta-feira, 4 de dezembro de 2008 18:17
  • Olá SirSmart,

     

    Coloque-as na criação da tabela temporária.

     

    CREATE TABLE #teste

    (

    StockID Tipo,

    Available Tipo,

    Carryin Tipo,

    Name Tipo,

    SecurityIDType char(1),

    ContryIncorp char(2),

    CountryList char(2),

    FidPosition char(1)

    )

     

    Depois é só executar o INSERT exatamente da mesma forma que você já está fazendo contemplando todas as colunas na declaração de campos e no SELECT.

     

    [ ]s,

     

    Gustavo

    quinta-feira, 4 de dezembro de 2008 18:18
  • Experimente fazer o seguinte:
    IF EXISTS(SELECT * FROM sysobjects WHERE name='nomedoprocedimento' AND type='P')
    BEGIN
        drop proc procedimento
    END
    GO

    CREATE PROC nomedoprocedimento(
    @SecurityIDType <tipo>,
    @ContryIncorp <TIPO>,
    @CountryList <TIPO>,
    @FidPosition <TIPO>)

    as


    SET NOCOUNT ON
    SELECT @securityIdtype as campo, @contryincorp as campo2, @countrylist as campo3, @fidposition as campo4,

    stock.Stockid,

    Stock.Available,

    stock.AccountId AS Carrying,

    enti.Name

    INTO #TEMP

    FROM Account AS acc

    LEFT JOIN Entity AS enti ON

    acc.EntityId = enti.id

    LEFT JOIN StockShare AS stock ON

    stock.AccountId = acc.id

    LEFT JOIN company AS comp ON

    comp.id = stock.Stockid

    WHERE stock.date = @dtOperation

    group by stock.Stockid,

    stock.Available,

    stock.AccountId,

    enti.Name



    SET NOCOUNT OFF


    SELECT * FROM #TEMP

    DROP TABLE #TEMP


    RETURN(0)
    GO
    quinta-feira, 4 de dezembro de 2008 18:21
  • Gustavo como ficaria meu insert, assim ?

    INSERT INTO #TESTE VALUES(@SecurityIDType,@ContryIncorp, @CountryList, @FidPosition, Stockid )

     

    Não funciona, pois deveria ser veriável não é?

     

    Obrigado

     

    quinta-feira, 4 de dezembro de 2008 18:24
  • Olá SirSmart,

     

    Após criar a tabela temporária tente o seguinte:

     

    INSERT INTO #Teste (Todas as colunas)

    SELECT

    stock.Stockid,

    Stock.Available,

    stock.AccountId AS Carrying,

    enti.Name,

    @SecurityIDType AS SecurityIDType,

    @ContryIncorp AS ContryIncorp,

    @CountryList AS CountryList,

    @FidPosition AS FidPosition

    FROM Account AS acc

    LEFT JOIN Entity AS enti ON

    acc.EntityId = enti.id

    LEFT JOIN StockShare AS stock ON

    stock.AccountId = acc.id

    LEFT JOIN company AS comp ON

    comp.id = stock.Stockid

    WHERE stock.date = @dtOperation

    group by stock.Stockid,

    stock.Available,

    stock.AccountId,

    enti.Name

     

    A dica do SELECT INTO que foi postada também é uma boa solução.

     

    [ ]s,

     

    Gustavo

    quinta-feira, 4 de dezembro de 2008 19:06