|
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);
|