Conjuntos de resultados na tarefa Executar SQL
Em um pacote do Integration Services, se um conjunto de resultados deve ser retornado para a tarefa Executar SQL ou não depende do tipo de comando SQL que a tarefa usa. Por exemplo, uma instrução SELECT normalmente retorna um conjunto de resultados, mas uma instrução INSERT não retorna.
O que o conjunto de resultados contém também varia com o comando SQL. Por exemplo, o conjunto de resultados de uma instrução SELECT pode conter nenhuma linha, uma linha ou muitas linhas. No entanto, o conjunto de resultados de uma instrução SELECT que retorna uma contagem ou soma tem apenas uma única linha.
Trabalhar com conjuntos de resultados em uma tarefa Executar SQL é mais do que apenas saber se o comando SQL retorna um conjunto de resultados e o que ele contém. Há requisitos de uso e diretrizes adicionais para a utilização bem-sucedida dos conjuntos de resultados na tarefa Executar SQL. Esses requisitos de uso e diretrizes são abordados no restante deste tópico:
Especificando um tipo de conjunto de resultados
Populando uma variável com um conjunto de resultados
Configurando resultados conjuntos de resultados no Editor da Tarefa Executar SQL
Especificando um tipo de conjunto de resultados
O a tarefa Executar SQL dá suporte aos seguintes tipos de conjuntos de resultados:
O conjunto de resultados Nenhum é usado quando a consulta não retorna nenhum resultado. Por exemplo, esse conjunto de resultados é usado para consultas que adicionam, alteram e excluem registros em uma tabela.
O conjunto de resultados Linha simples é usado quando a consulta retorna apenas uma linha. Por exemplo, esse conjunto de resultados é usado para uma instrução SELECT que retorna uma contagem ou soma.
O Conjunto de resultados completo é usado quando a consulta retorna várias linhas. Por exemplo, este conjunto de resultados é usado para uma instrução SELECT que recupera todas as linhas em uma tabela.
O conjunto de resultados XML é usado quando a consulta retorna um conjunto de resultados em um formato XML. Por exemplo, esse conjunto de resultados é usado para uma instrução SELECT que inclui uma cláusula FOR XML.
Se a tarefa Executar SQL usar o Conjunto de resultados completo e a consulta retornar vários conjuntos de linhas, a tarefa retornará apenas o primeiro. Se este conjunto de linhas gerar um erro, a tarefa informará o erro. Se outros conjuntos de linhas gerarem erros, a tarefa não os informará.
Populando uma variável com um conjunto de resultados
Você poderá associar o conjunto de resultados retornado por uma consulta a uma variável definida pelo usuário se o tipo de conjunto de resultados for uma única linha, um conjunto de linhas ou XML.
Se o tipo de conjunto resultante for Linha simples, você poderá associar uma coluna no resultado de retorno a uma variável usando o nome da coluna como o nome do conjunto de resultados ou pode usar a posição ordinal da coluna na lista de colunas como o nome do conjunto de resultados. Por exemplo, o nome do conjunto de resultados da consulta SELECT Color FROM Production.Product WHERE ProductID = ? pode ser Color ou 0. Se a consulta retornar várias colunas e você quiser acessar os valores em todas elas, associe cada coluna a uma variável diferente. Se você mapear as colunas para variáveis usando números como nomes do conjunto de resultados, os números refletirão a ordem em que as colunas aparecerão na lista de colunas da consulta. Por exemplo, na consulta SELECT Color, ListPrice, FROM Production.Product WHERE ProductID = ?, você usa 0 para a coluna Color e 1 para a coluna ListPrice. A capacidade de usar um nome de coluna como o nome do conjunto de resultados depende do provedor que a tarefa está configurada para usar. Nem todos os provedores tornam os nomes das colunas disponíveis.
Algumas consultas que retornam um único valor podem não incluir nomes de colunas. Por exemplo, a instrução SELECT COUNT (*) FROM Production.Product não retorna nenhum nome de coluna. Você pode acessar o resultado de retorno usando a posição ordinal, 0, como o nome do resultado. Para acessar o resultado de retorno por nome de coluna, a consulta deve incluir uma cláusula de <nome de alias> AS para fornecer um nome de coluna. A instrução SELECT COUNT (*)AS CountOfProduct FROM Production.Product fornece a coluna CountOfProduct. Você pode acessar a coluna de resultado de retorno que usa o nome de coluna CountOfProduct ou a posição ordinal 0.
Se o tipo de conjunto de resultados for Conjunto de resultados completo ou XML, será necessário usar 0 como o nome de conjunto de resultados.
Quando você mapeia uma variável para um conjunto de resultados com o tipo de conjunto de resultados Linha simples, a variável deve ter um tipo de dados compatível com o tipo de dados da coluna que o conjunto de resultados contém. Por exemplo, um conjunto de resultados que contém uma coluna com um tipo de dados String não pode ser mapeado para uma variável com um tipo de dados numérico. Quando você define a propriedade TypeConversionMode como Allowed, a Tarefa Executar SQL tentará converter o parâmetro de saída e os resultados da consulta no tipo de dados da variável à qual os resultados estão atribuídos.
Um conjunto de resultados XML somente pode ser mapeado para uma variável com o tipo de dados String ou Object. Se a variável tiver o tipo de dados String, a tarefa Executar SQL retorna uma cadeia de caracteres e a fonte XML pode consumir os dados XML. Se a variável tiver o tipo de dados Object, a tarefa Executar SQL retornará um objeto do Modelo de Objeto de Documento (DOM).
Um Conjunto de resultados completo deve ser mapeado para uma variável do tipo de dados Object. O resultado de retorno é um objeto de conjunto de linhas. É possível usar um contêiner do Loop Foreach para extrair valores de linhas de tabela armazenados na variável Object nas variáveis de pacote, e usar uma Tarefa Script para gravar os dados armazenados nas variáveis de pacotes em um arquivo. Para ver uma demonstração de como fazer isso usando um contêiner do Loop Foreach e uma Tarefa Script, consulte os exemplos CodePlex, Execute SQL Parameters and Result Sets (Executar parâmetros de SQL e conjuntos de resultados), em msftisprodsamples.codeplex.com.
A tabela a seguir resume os tipos de dados de variáveis que podem ser mapeadas para conjuntos de resultados.
Tipo de conjunto de resultados |
Tipo de dados da variável |
Tipo de objeto |
---|---|---|
Linha simples |
Qualquer tipo compatível com a coluna de tipo no conjunto de resultados. |
Não aplicável |
Conjunto de resultados completo |
Object |
Se a tarefa usar um gerenciador de conexões nativo, incluindo os gerenciadores de conexões ADO, OLE DB, Excel e ODBC, o objeto retornado será Recordset ADO. Se a tarefa usar um gerenciador de conexões gerenciado, como o gerenciador de conexões ADO.NET, o objeto retornado será um System.Data.DataSet. Você pode usar uma tarefa Script para acessar o objeto System.Data.DataSet , conforme mostrado no exemplo a seguir.
|
XML |
String |
String |
XML |
Object |
Se a tarefa usar um gerenciador de conexões nativo, inclusive os gerenciadores de conexões ADO, OLE DB, Excel e ODBC, o objeto retornado será MSXML6.IXMLDOMDocument. Se a tarefa usar um gerenciador de conexões gerenciado, como o gerenciador de conexões ADO.NET, o objeto retornado será um System.Xml.XmlDocument. |
A variável pode ser definida no escopo da tarefa Executar SQL ou do pacote. Se a variável tiver escopo de pacote, o conjunto de resultados estará disponível para outras tarefas e contêineres no pacote e para qualquer pacote executado pelas tarefas Executar pacote ou Executar Pacotes do DTS 2000.
Quando você mapeia uma variável para um conjunto de resultados de Linha simples, os valores que não são de cadeia de caracteres retornados pela instrução SQL são convertidos em cadeias de caracteres quando as seguintes condições são atendidas:
A propriedade TypeConversionMode é definida como verdadeira. Você define o valor da propriedade na janela Propriedades ou por meio do Editor da Tarefa Executar SQL.
A conversão não resultará em truncamento de dados.
Para obter informações sobre como carregar um conjunto de resultados em uma variável, consulte Mapear conjuntos de resultados para variáveis em uma tarefa Executar SQL.
Configurando conjuntos de resultados na tarefa Executar SQL
Para obter mais informações sobre as propriedades dos conjuntos de resultados que podem ser definidas no Designer SSIS, clique no seguinte tópico:
Para obter mais informações sobre como definir essas propriedades no SSIS Designer, clique no tópico a seguir:
Tarefas relacionadas
Mapear conjuntos de resultados para variáveis em uma tarefa Executar SQL
Conteúdo relacionado
- Exemplo do CodePlex, Execute SQL Parameters and Result Sets (em inglês), em msftisprodsamples.codeplex.com
|