AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 52420
Accepted
ajeh
ajeh
Asked: 2013-10-30 06:49:02 +0800 CST2013-10-30 06:49:02 +0800 CST 2013-10-30 06:49:02 +0800 CST

Não obtendo um conjunto de resultados no SSRS 2008r2 de um procedimento armazenado iSeries DB2 SQL

  • 772

Depois de ler a seção ' Definindo um procedimento SQL ' do DB2 UDB para iSeries SQL Programming Concepts V5R2 e a seção ' Retornando conjuntos de resultados de procedimentos armazenados ' do Centro de Informações do i5/OS, Versão 5 Release 4, criei o seguinte procedimento armazenado:

CREATE PROCEDURE TESTDAT.REPORT (IN DATESTART DATE, IN DATEEND DATE)
LANGUAGE SQL READS SQL DATA
BEGIN
    DECLARE CSR1 CURSOR WITH RETURN FOR
    SELECT *
    FROM  SYSIBM.SYSDUMMY1;

    OPEN CSR1;
    RETURN;
END

Em seguida, li a seção 'Exemplo 1: Chamando um procedimento armazenado que retorna um único conjunto de resultados' do mesmo i5/OS Information Center, Versão 5 Release 4 e tentei chamar esse procedimento do cliente SqlDbx (via ODBC) ou do relatório SSRS (via provedor IBMDASQL) usando a instrução abaixo:

CALL TESTDAT.REPORT (DATE('11/01/2013'), DATE('11/03/2013'));

Ele foi executado com sucesso, mas não retornou o conjunto de resultados. Executar isso através do navegador iSeries retorna com sucesso 2 instruções - selecione e declare o cursor. Chamando

SELECT * FROM  SYSIBM.SYSDUMMY1;

retorna a coluna IBMREQD com 1 linha de 'Y'. O que estou perdendo nos documentos acima?

Atualizar:

O SQL gerado para este procedimento inclui outras opções além das já discutidas:

SPECIFIC TESTDAT.REPORT 
NOT DETERMINISTIC 
READS SQL DATA 
CALLED ON NULL INPUT 
SET OPTION  ALWBLK = *ALLREAD , 
ALWCPYDTA = *OPTIMIZE , 
COMMIT = *NONE , 
DECRESULT = (31, 31, 00) , 
DFTRDBCOL = *NONE , 
DYNDFTCOL = *NO , 
DYNUSRPRF = *USER , 
SRTSEQ = *HEX   

Algum deles pode afetar o retorno do conjunto de resultados para o SSRS?

stored-procedures db2
  • 3 3 respostas
  • 2988 Views

3 respostas

  • Voted
  1. mustaccio
    2013-10-30T14:54:05+08:002013-10-30T14:54:05+08:00

    Uma coisa que está faltando em sua declaração de procedimento armazenado é a DYNAMIC RESULT SETSopção. O valor padrão para essa opção é 0, pode ser isso que confunde o software cliente. Se ele (o software cliente) pode manipular cursores retornados por um procedimento armazenado é outra história.

    • 2
  2. Best Answer
    ajeh
    2013-11-01T08:53:43+08:002013-11-01T08:53:43+08:00

    A solução para relatar o procedimento armazenado SQL do iSeries no SSRS é instalar o provedor DB2UDB .Net fornecido com o IBM Client Access no BIDS, incluindo duas tags XML no RSReportDesigner.config.

    Adicione o seguinte à <Data>tag em .config:

    <Extension Name="DB2UDB" Type="IBM.Data.DB2.iSeries.iDB2Connection,IBM.Data.DB2.iSeries, Version=12.0.0.0, Culture=neutral, PublicKeyToken=9CDB2EBFB1F93A26"/>
    

    Adicione o seguinte à <Designer>tag:

    <Extension Name="DB2UDB" Type="Microsoft.ReportingServices.QueryDesigners.GenericQueryDesigner,Microsoft.ReportingServices.QueryDesigners"/>
    

    Isso adicionará DB2UDB a uma lista de provedores nas propriedades da fonte de dados. Então você pode usar uma string de conexão com o seguinte formato nas fontes de dados:

    Data Source=<IP of FQDN>;Initial Catalog=<DB name>;UserID=<user ID>;Password=<pass>;
    

    O ID do usuário e a senha precisam ser inseridos na string de conexão, pois o provedor não poderá usá-los se inseridos na guia Credenciais.

    O assistente de relatório do SSRS não pode criar um relatório com base em um SP. Em vez disso, deve ser usado um relatório baseado em uma instrução de seleção temporária ( select * from sysibm.sysdummy1ou qualquer outra seleção rápida serviria).

    Depois que um relatório é criado, seu tipo de conjunto de dados pode ser alterado de consulta para procedimento armazenado. O nome do SP deve ser inserido manualmente (o menu suspenso está vazio). Os parâmetros devem ser inseridos manualmente (não atualizará os campos até que os parâmetros sejam inseridos). Os nomes dos parâmetros precisam corresponder ao SP e aos valores dos parâmetros inseridos como [@<param name>]. Os parâmetros de data devem ser especificados como tipo de texto ou data/hora com expressão de valor semelhante a esta:

    =FormatDateTime(Parameters!DATESTART.Value, DateFormat.ShortDate)
    

    Se estiver usando o tipo Texto, insira as datas sem aspas, ex: 31/10/2013

    • 2
  3. WarrenT
    2013-10-30T15:59:19+08:002013-10-30T15:59:19+08:00

    O iSeries Navigator não "retornou" duas instruções. Ele os ecoou na guia de mensagens, NÃO na guia de resultados de dados.

    SYSIBM.SYSDUMMY1 é uma tabela fornecida pela IBM com 1 coluna e uma linha. Você obteve a resposta correta para o procedimento que escreveu.

    SYSDUMMY1 geralmente é usado no código de exemplo como um proxy para avaliar expressões que não requerem nenhuma tabela. Por exemplo:

    SELECT monthname(CURRENT DATE)
        FROM SYSIBM.SYSDUMMY1;
    

    No entanto, essa é uma construção desnecessária, pois a instrução VALUES também funciona nessas situações e não requer tabela ou exibição como fonte de dados

    VALUES monthname(CURRENT DATE);
    

    Onde SELECT INTO seria usado, VALUES INTO é o equivalente.

    Portanto, agora que eliminamos sua necessidade de usar o SYSDUMMY1, a questão permanece: o que você está tentando realizar?

    • 1

relate perguntas

  • BLOB no DB2 v9 no z/OS

  • Como descubro se existe um procedimento ou função em um banco de dados mysql?

  • Alguém está usando o recurso do SQL Server para criar grupos de stored procedures diferenciadas por número?

  • SQL dinâmico em rotinas armazenadas do MySQL

  • O que significa HSJOIN em um plano de explicação?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Conceder acesso a todas as tabelas para um usuário

    • 5 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve