sc_lookup_field(dataset, "comando SQL", "nome_conexão")

Esta macro possibilita que o desenvolvedor execute um comando SELECT por vez e tenha acesso aos dados retornados através do parâmetro dataset, em formato de array: {dataset[numero_da_linha][nome_da_coluna]}.
Para executar comandos que retornem uma quantidade elevada de dados, recomendamos a utilização da sc_select para obter uma melhor performance.

Diferente da macro sc_lookup, onde informamos o índice {dataset[0][0]}, na macro sc_lookup_field devemos informar o nome da coluna que desejamos recuperar os dados {dataset[0][field_name]}

A forma de montagem do array de retorno, onde devemos informar o nome da coluna, torna esta macro incompatível com os seguintes banco de dados: MSSQL Server, Access e DB2. Nestes casos, recomendamos a utilização da macro sc_lookup.

Confira abaixo os detalhes sobre os parâmetros da macro.

Parâmetro Descrição Exemplos
dataset

Este parâmetro é obrigatório e deve ser informado sem espaço ou caracteres especiais e não aceita a utilização de variáveis.

Ele define o nome da variável que receberá o retorno do comando SELECT executado pela macro.

 

Em caso de erro na execução do comando SQL este parâmetro retornará false e a mensagem de erro estará disponível na variável "dataset_erro".

Veja abaixo um exemplo simples de validação e exibição da mensagem de erro.

if ( {meus_dados} === false ) {

echo "Erro de acesso. Mensagem = " . {meus_dados_erro};

}

Abaixo vemos um exemplo de um comando select simples, onde o dataset está definido como meus_dados.

sc_lookup_field("meus_dados", "select field_01, field_02, field_03 from tb_name");

O array com o resultado deste select será montado da seguinte forma:

 Array (
    [0] => Array (
            [field_01] => 1
[field_02] => OFFICE EQUIPMENT ) [1] => Array ( [field_01] => 2
[field_02] => FIXED TELEPHONY
)
)

No exemplo acima, o comando retornou duas linhas de registro (0 e 1) e em cada linha duas colunas (field_01 e field_02).

Para recuperarmos o valor do dataset devemos informar entra chaves {} o nome do dataset (meus_dados) seguido do número da linha entre colchetes [0] e o nome da coluna [field_01]. Confira o exemplo abaixo

{meus_dados[numero_da_linha][nome_da_coluna]}
comando_select

Este parâmetro é obrigatório e pode ser definido informado o comando diretamente na macro protegido com aspas(Duplas ou Simples) ou utilizando uma variável(Local ou Global).

// comando direto na macro
sc_lookup_field("retorno_select", "select field_01, field_02, field_03 from tb_name");
// Exemplo com variável
$comando_select = "select field_01, field_02, field_03 from tb_name"
sc_lookup_field("retorno_select", $comando_select);
nome_conexao

O parâmetro "conexão" é opcional, e deve ser informado se o comando for executado em uma base de dados diferente da especificada para a aplicação.

Alem disso, este parâmetro não aceita a utilização de variáveis, sendo necessário digitar o nome da conexão para que a macro execute corretamente.

// Exemplo informando o nome da conexão
sc_lookup_field("retorno_select", "select field_01, field_02, field_03 from tb_name", "nome_conexao");

 

Exemplos


Exemplo 1: Acesso várias linhas

sc_lookup_field(meus_dados, "select field_01, field_02, field_03 from tb_name");

//Para ter acesso à primeira linha (dataset), devemos informar:
{field_01} = {meus_dados[0]['field_01']};
{field_02} = {meus_dados[0]['field_02']};
{field_03} = {meus_dados[0]['field_03']};

//Para ter acesso à segunda linha (dataset), teremos:
{field_01} = {meus_dados[1]['field_01']};
{field_02} = {meus_dados[1]['field_02']};
{field_03} = {meus_dados[1]['field_03']};

 

Exemplo 2: Com validação dos dados:

$comando_sql = "select field_01, field_02, field_03 from tb_name";

sc_lookup_field(meus_dados, $comando_sql);

if ( {meus_dados} === false ) {

echo "Erro de acesso. Mensagem = " . {meus_dados_erro};

} elseif ( empty({meus_dados}) ) {

echo "Comando select não retornou dados ";

} else {

{clienteid} = {meus_dados[0]['field_01']};
{nomecliente} = {meus_dados[0]['field_02']};
{limitecred} = {meus_dados[0]['field_03']};

}

 

Exemplo 3: Utilizando o parâmetro conexão

$comando_sql = "select field_01, field_02 from tb_name where field_03 = '{field_03} ' and field_02 = [var_global]"

sc_lookup_field(meus_dados, $comando_sql, "conn_name");

 

Exemplo 4: Utilizando variáveis locais e globais no comando da macro

$comando_sql = "select field_01, field_02 from tb_name where field_03 = '{field_03} ' and field_02 = [var_global]"

sc_lookup_field(meus_dados, $comando_sql);