Friday 18 August 2017

Proc Optmodel Binário Opções


PROC OPTMODEL Statement A instrução PROC OPTMODEL invoca o procedimento OPTMODEL. Você pode especificar opções para controlar como o modelo de otimização é processado e como os resultados são exibidos. Esta é a sintaxe: As seguintes opções podem aparecer na instrução PROC OPTMODEL (essas opções também podem ser especificadas pela instrução RESET). CDIGITS num especifica o número esperado de dígitos decimais de precisão para restrições não-lineares. O valor pode ser fracionário. PROC OPTMODEL usa essa opção para escolher um comprimento de etapa quando são necessárias aproximações numéricas derivadas para avaliar o Jacobiano de restrições não-lineares. O valor padrão depende do seu ambiente operacional. Assume-se que os valores de restrição são precisos aos limites da precisão da máquina. Consulte a seção Diferenciação Automática para obter mais informações sobre aproximações de derivativos numéricos. FDFORWARDCENTRAL seleciona o método usado para aproximar derivadas numéricas quando derivadas analíticas não estão disponíveis. A maioria dos resolvedores requerem os derivados do objetivo e restrições. Os métodos disponíveis são os seguintes: FDFORWARD usar diferenças diretas FDCENTRAL usar diferenças centrais O valor padrão é FORWARD. Consulte a seção Diferenciação automática para obter mais informações sobre aproximações de derivativos numéricos. FDIGITS num especifica o número esperado de dígitos decimais de precisão para a função objetivo. O valor pode ser fracionário. PROC OPTMODEL usa o valor para escolher um comprimento de etapa quando derivadas numéricas são necessárias. O valor padrão depende do seu ambiente operacional. Supõe-se que os valores da função objetivo são precisos aos limites da precisão da máquina. Consulte a seção Diferenciação automática para obter mais informações sobre aproximações de derivativos numéricos. INITVAR NOINITVAR seleciona se deve ou não passar valores iniciais para variáveis ​​para o solver quando a instrução SOLVE é executada. INITVAR permite que os valores da variável atual sejam passados. NOINITVAR faz com que o solucionador seja invocado sem valores iniciais específicos para variáveis. A opção INITVAR é o padrão. Observe que os solucionadores LP e QP sempre ignoram os valores iniciais. Os resolvedores NLPU, NLPC, SQP e IPNLP tentam usar valores iniciais especificados. O solucionador MILP usa valores iniciais somente se a opção PRIMALIN for especificada. INTFUZZ num especifica a tolerância para arredondamento dos limites em inteiro e variáveis ​​binárias para valores inteiros. Os limites que diferem de um número inteiro no máximo num são arredondados para esse inteiro. Caso contrário, os limites inferiores são arredondados para o próximo inteiro maior e os limites superiores são arredondados para baixo para o próximo número menor. O valor de num pode variar entre 0 e 0,5. O valor padrão é 0,00001. MAXLABLEN num especifica o comprimento máximo para etiquetas de linha e coluna MPS. O intervalo permitido é de 8 a 256, com 32 como padrão. Essa opção também pode ser usada para controlar o comprimento dos nomes de linhas e colunas exibidos por solucionadores, como os encontrados no log de iteração do solver do LP. O MISSCHECK NOMISSCHECK permite verificar detalhadamente os valores em falta nas expressões. MISSCHECK solicita que uma mensagem seja produzida cada vez que PROC OPTMODEL avalia uma operação aritmética ou função incorporada que tem operandos de valor faltando (exceto quando a operação ou função suporta especificamente valores ausentes). A opção MISSCHECK pode aumentar o tempo de processamento. NOMISSCHECK desativa esse relatório detalhado. NOMISSCHECK é o padrão. PDIGITS num solicita que a instrução PRINT exiba dígitos significativos para colunas numéricas para as quais nenhum formato é especificado. O valor pode variar de 1 a 9. O padrão é 5. PMATRIX num ajusta a avaliação da densidade de uma matriz bidimensional para afetar a forma como ela é exibida. O valor num escala o número total de elementos de matriz não vazios e é usado pela instrução PRINT para avaliar se um array bidimensional é esparso ou denso. As tabelas que contêm uma única matriz bidimensional são impressas na forma de lista se forem escassas e em forma de matriz se forem densas. Qualquer valor não negativo pode ser atribuído a num o valor padrão é 1. Especificar valores para a opção PMATRIX menos de 1 faz com que o formulário de lista seja usado em mais casos, enquanto especificar valores maiores que 1 faz com que o formulário de matriz seja usado em mais casos . Se o valor for 0, o formulário de lista será sempre usado. Consulte a seção Declaração PRINT para obter mais informações. A opção PRESOLVER PRESOLVER num especifica uma opção presolve ou seu valor correspondente num. Conforme listado na Tabela 6.6. Tabela 6.6: Valores para a opção PRESOLVER Aplique o nível mais alto de processamento presolve. O dispositivo OPTMODEL aperta os limites variáveis ​​e elimina restrições redundantes. Em geral, isso melhora o desempenho de qualquer solucionador. A opção AUTOMÁTICA é intermediária entre os níveis MODERADO e AGRESSIVO. PRESTOL num fornece uma tolerância para que restrições ligeiramente impraticáveis ​​possam ser eliminadas pelo presímetro OPTMODEL. Se a magnitude da inviabilidade não for maior do que, onde X é o valor do limite original, então a restrição vazia é removida do problema presolvido. OPTMODELs presolver não imprime mensagens sobre restrições inviáveis ​​e limites variáveis ​​quando a infeasibilty está dentro da tolerância PRESTOL. O valor de PRESTOL pode variar entre 0 e 0,1, o valor padrão é 1E-12. PRINTLEVEL num controla o nível de saída da listagem durante um comando SOLVE. As tabelas Output Delivery System (ODS) impressas em cada nível estão listadas na Tabela 6.7. Alguns solucionadores podem produzir tabelas adicionais, consulte os capítulos individuais de resolução para obter mais informações. Tabela 6.7: Valores para a opção PRINTLEVEL Desabilite todas as tabelas. Resumo do problema de impressão e resumo da solução. Resumo de Problemas de Impressão, Resumo de Soluções, Métodos de Computação Derivada (para solucionadores de PNL), Opções de Solver, Estatísticas de Otimização e tabelas de ODS específicas para o solucionador. Para obter mais detalhes sobre as tabelas ODS produzidas pelo PROC OPTMODEL, consulte a seção Tabela ODS e nomes de variáveis. PWIDTH num define a largura usada pela instrução PRINT para exibir colunas numéricas quando nenhum formato é especificado. O menor valor num pode tomar é o valor da opção PDIGITS mais 7 o maior valor num pode tomar é 16. O valor padrão é igual ao valor da opção PDIGITS mais 7. VARFUZZ num especifica a menor diferença que é permitida pela OPTMODEL presolver entre os limites superior e inferior de uma variável não fixa. Se a diferença for menor que num. Então a variável é fixada à média dos limites superior e inferior antes de ser apresentada ao solucionador. Qualquer valor não negativo pode ser atribuído a num, o valor padrão é 0. As declarações de declaração definem os parâmetros, variáveis, restrições e objetivos que descrevem um modelo de otimização do PROC OPTMODEL. As declarações na entrada PROC OPTMODEL são salvas para uso posterior. Ao contrário das instruções de programação, as declarações não podem ser aninhadas em outras instruções. As declarações de declaração são terminadas por um ponto-e-vírgula. Muitos atributos de declaração, como limites de variáveis, são definidos usando expressões. Expressões em declarações são manipuladas simbolicamente e são resolvidas conforme necessário. Em particular, as expressões são geralmente reavaliadas quando um dos valores dos parâmetros que utilizam foi alterado. CONSTRAINT Declaração Restrição CONSTRAINT. Constraint CON constraint. Constraint A declaração de restrição define uma ou mais restrições em expressões em termos das variáveis ​​de otimização. Você pode especificar várias instruções de declaração de restrição. As restrições podem ter um limite superior, um limite inferior ou ambos os limites. Os formulários permitidos são os seguintes: nome. Expression expressa uma restrição de igualdade ou, quando um conjunto de índices é especificado, uma família de restrições de igualdade. O solucionador tenta atribuir valores às variáveis ​​de otimização para fazer as duas expressões iguais. Nome. Expression expression expressão declara uma restrição de desigualdade que tem um único limite superior ou inferior. Quando um conjunto de índices é especificado, isso declara uma família de restrições de desigualdade. Relação é o lt ou operador. O solucionador tenta atribuir valores de variáveis ​​de otimização para que a expressão esquerda tenha um valor menor ou igual (respectivamente, maior ou igual) ao valor de expressão correto. Nome. Bound relationship body relationship bound declara uma restrição de desigualdade que é limitada em ambos os lados, ou restrição de intervalo. Quando um conjunto de índices é especificado, isso declara uma família de restrições de intervalo. Relação é o lt ou operador. O mesmo operador deve ser utilizado em ambas as posições. A primeira expressão ligada define o limite inferior (respectivamente, limite superior). A segunda expressão ligada define o limite superior (respectivamente, limite inferior). O solucionador tenta atribuir variáveis ​​de otimização para que o valor da expressão do corpo esteja no intervalo entre os limites superior e inferior. Nome define o nome da restrição. Use o nome para fazer referência aos atributos de restrição, como os limites, em outro lugar no modelo PROC OPTMODEL. Se nenhum nome for fornecido, um nome padrão será criado do formulário ACON. Onde é um inteiro. Consulte a seção Restrições para obter mais informações. Aqui está um exemplo simples que define uma restrição com um limite inferior: O exemplo a seguir adiciona um limite superior: As famílias indexadas de restrições podem ser definidas especificando um conjunto de índices após o nome. Quaisquer parâmetros fictícios declarados no conjunto de índices podem ser referenciados nas expressões que definem a restrição. Um membro específico de uma família indexada pode ser especificado usando uma expressão-identificador com uma lista de índices entre colchetes, da mesma forma que parâmetros e variáveis ​​de matriz. Por exemplo, as instruções a seguir criam uma família indexada de restrições denominadas incr. A instrução CON no exemplo cria restrições incr1 a incr 1. As expressões de restrição não podem ser definidas usando funções que retornam valores diferentes cada vez que são chamadas. Consulte a seção Indexação para obter detalhes. IMPVAR Declaração IMPVAR impvar-decl. Impvar-decl A instrução IMPVAR declara um ou mais nomes que se referem a expressões de otimização no modelo. O nome declarado é chamado de variável implícita. Uma variável implícita é útil para estruturar modelos de modo que as expressões complexas não precisam ser repetidas cada vez que são usadas. O valor de uma variável implícita precisa ser computado apenas uma vez em vez de em cada local onde a expressão original é usada, o que ajuda a reduzir a sobrecarga computacional. Variáveis ​​implícitas são avaliadas sem intervenção do solucionador. São permitidas várias instruções IMPVAR. Os nomes de variáveis ​​implícitas devem ser distintos de outras declarações de modelo, como variáveis ​​e restrições. Variáveis ​​implícitas podem ser usadas em expressões de modelo nos mesmos locais onde as variáveis ​​comuns são permitidas. Esta é a sintaxe para um impvar-decl. Cada impvar-decl declara um nome para uma variável implícita. O nome pode ser seguido por uma especificação de conjunto de índices para declarar uma família de variáveis ​​implícitas. A expressão referenciada pelo nome segue. Parâmetros fictícios declarados na especificação do conjunto de índices podem ser usados ​​na expressão. A expressão pode fazer referência a outros componentes do modelo, incluindo variáveis ​​e outras variáveis ​​implícitas. Como exemplo, nas declarações do modelo a seguir, a variável implícita totalweight é usada em várias restrições para definir um limite em várias quantidades de produto, representadas por localizações na matriz x. MAX e MIN Objective Declarations Expressão de nome MAX Expressão de nome MIN A declaração MAX ou MIN especifica um objectivo para o solver. O nome nomeia a função objetivo para referência posterior. O solucionador maximiza um objetivo que é especificado com a palavra-chave MAX e minimiza um objetivo que é especificado com a palavra-chave MIN. Um objetivo não é permitido ter o mesmo nome de um parâmetro ou variável. Múltiplos objetivos são permitidos, mas o solucionador processa apenas um objetivo de cada vez. Expression especifica a função numérica para maximizar ou minimizar em termos das variáveis ​​de otimização. Especifique um conjunto de índices para declarar uma família de objetivos. Parâmetros fictícios declarados na especificação do conjunto de índices podem ser usados ​​na seguinte expressão. Os objetivos também podem ser usados ​​como variáveis ​​implícitas. Quando usado em uma expressão, um nome de objetivo refere-se ao valor atual da função objetivo nomeada. O valor de um nome de objetivo não sufixado pode depender do valor das variáveis ​​de otimização, portanto, os nomes de objetivo não podem ser usados ​​em expressões constantes, como os limites de variáveis. Você pode referenciar nomes de objetivos em expressões de objetivo ou de restrição. Por exemplo, as seguintes declarações declaram dois nomes objetivos, q e l. Que são imediatamente referidos na declaração objectiva de z e as declarações das restrições. Objetivos não podem ser definidos usando funções que retornam valores diferentes cada vez que são chamados. Consulte a seção Indexação para obter detalhes. NUMBER, STRING e SET Parâmetro Declarações NUMBER parâmetro-decl. Parameter-decl STRING parâmetro-decl. Parameter-decl SET ltscalar-type. Scalar-type parameter-decl. Parameter-decl Parâmetros fornecem nomes para constantes. Os parâmetros são declarados especificando o tipo de parâmetro seguido por uma lista de nomes de parâmetro. As declarações de parâmetros que têm NUMBER ou tipos STRING começam com uma especificação de tipo escalar: NUMBER NUM STRING STR As palavras-chave NUM e STR são abreviaturas para as palavras-chave NÚMERO e STRING, respectivamente. A declaração de um parâmetro que tem o tipo de conjunto começa com uma especificação de tipo de conjunto: SET ltscalar-type. Scalar-type Em uma declaração de tipo de conjunto, a palavra-chave SET é seguida por uma lista de itens de tipo escalar que especificam o tipo de membro. Um conjunto com membros escalares é especificado com um único item de tipo escalar. Um conjunto com membros de tupla tem um item de tipo escalar para cada elemento de tupla. Os itens de tipo escalar especificam os tipos de elementos em cada posição de tupla. Se a palavra-chave SET não for seguida por uma lista de itens de tipo escalar, o tipo de conjunto será determinado a partir do tipo da expressão de inicialização. O tipo declarado padrão para SETltNUMBER se nenhuma expressão de inicialização é dada ou se o tipo de expressão não pode ser determinado. Para qualquer tipo de parâmetro, a declaração de tipo é seguida por uma lista de itens de declaraão de parâmetro que especificam os nomes dos parâmetros a serem declarados. Em um item parâmetro-decl, o nome do parâmetro pode ser seguido por uma especificação de índice opcional e quaisquer opções necessárias, como segue: O nome do parâmetro eo conjunto de índice podem ser seguidos por uma lista de opções de parâmetro. Os parâmetros manequins declarados no conjunto de índices podem ser usados ​​nas opções de parâmetro. As opções de parâmetro podem ser especificadas com os seguintes formulários: Esta opção fornece um valor explícito para cada localização de parâmetro. Neste caso, o parâmetro age como um alias para o valor de expressão. Esta opção especifica um valor padrão que é usado quando um valor de parâmetro é necessário, mas nenhum outro valor foi fornecido. Por exemplo: PROC OPTMODEL avalia a expressão para cada localização de parâmetro a primeira vez que o parâmetro precisa ser resolvido. A expressão não é utilizada quando o parâmetro já tem um valor. Esta opção fornece um meio compacto para definir os valores para uma matriz, em que cada valor de localização da matriz pode ser especificado individualmente pelos inicializadores. Esta opção fornece um meio compacto para definir vários valores padrão para uma matriz. Cada valor de localização de matriz pode ser especificado individualmente pelos inicializadores. Com esta opção os valores da matriz ainda podem ser atualizados fora da declaração. A opção parâmetro de expressão define um valor de parâmetro usando uma fórmula. A fórmula pode se referir a outros parâmetros. O valor do parâmetro é atualizado quando os parâmetros referenciados mudam. O exemplo a seguir mostra os efeitos da atualização: No exemplo anterior, o valor de set s é resolvido para cada uso da matriz a que possui um índice. Para o primeiro uso de a7. O valor 7 não é um membro do conjunto s. No entanto, o valor 7 é um membro de s na segunda utilização de a7. A opção de parâmetro de expressão INIT especifica um valor padrão para um parâmetro. O exemplo a seguir mostra o uso desta opção: Quando o valor de um parâmetro é necessário, mas nenhum outro valor foi fornecido, o valor padrão especificado pela expressão INIT é usado, como mostrado na Figura 8.8. Figura 8.8 Opção INIT: Saída Cada inicializador tem a seguinte forma: O valor especifica o valor de um local de matriz e pode ser uma constante numérica ou string, um conjunto literal. Ou uma expressão entre parênteses. Em inicializadores de matriz, constantes de seqüência de caracteres podem ser especificadas usando seqüências entre aspas. Quando o texto seqüência de caracteres segue as regras para um nome SAS, o texto também pode ser especificado sem aspas. As constantes de string que começam com um dígito, contêm espaços em branco ou contêm outros caracteres especiais devem ser especificadas com uma string entre aspas. Como exemplo, o código a seguir define um parâmetro de matriz que pode ser usado para mapear dias numéricos da semana para strings de texto: O índice opcional entre colchetes especifica o índice do local da matriz a ser inicializado. O índice especifica um ou mais subíndices numéricos ou de seqüência de caracteres. Os subscritos permitem as mesmas formas sintáticas que os itens de valor. As vírgulas podem ser usadas para separar índices de índice. Por exemplo, a localização a1, abc de uma matriz a pode ser especificada com o índice 1 abc. O exemplo a seguir inicializa apenas os locais diagonais em uma matriz quadrada: Um índice não precisa especificar todos os subscritos de um local de matriz. Se o índice começa com uma vírgula, apenas os índices mais à direita do índice precisam ser especificados. Os índices precedentes são fornecidos a partir do índice que foi utilizado pelo inicializador anterior. Isso pode simplificar a inicialização de arrays que são indexados por vários índices. Por exemplo, você pode adicionar novas entradas à matriz do exemplo anterior usando as seguintes instruções: O espaçamento mostra o layout da matriz de exemplo. O exemplo anterior foi atualizado inicializando mais dois valores em m1,3 e m2.3. Se um índice for omitido, então o próximo local na ordem do conjunto de índices de arrays é inicializado. Se o conjunto de índice tiver vários itens de conjunto de índice. Os índices mais à direita são atualizados antes dos índices à esquerda serem atualizados. No início da lista de inicialização, o índice mais à direita é o primeiro membro do conjunto de índice. O conjunto de índice deve usar uma expressão de intervalo para evitar resultados imprevisíveis quando um valor de índice é omitido. Os inicializadores podem ser seguidos por vírgulas. O uso de vírgulas não tem nenhum efeito na inicialização. A vírgula pode ser usada para esclarecer layout. Por exemplo, a vírgula poderia separar linhas em uma matriz. Nem todos os locais da matriz precisam ser inicializados. As localizações sem um inicializador explícito são definidas como zero para arrays numéricos, definidas para uma string vazia para matrizes de seqüência de caracteres e definidas como um conjunto vazio para arrays de conjuntos. Nota: Um local de matriz não deve ser inicializado mais de uma vez durante o processamento da lista de inicialização. PROBLEMA Declaração Problemas são declarados com a declaração PROBLEMA. As declarações de problemas controlam um objetivo, um conjunto de variáveis ​​e restrições incluídas e algumas informações de status associadas às variáveis ​​e restrições. O nome do problema pode opcionalmente ser seguido por um conjunto de índices para criar uma família de problemas. Quando um problema é usado pela primeira vez (através da instrução USE PROBLEM), as especificações das cláusulas FROM e INCLUDE opcionais criam o conjunto inicial de variáveis ​​incluídas, restrições eo objetivo do problema. Um problema vazio é criado se nenhuma cláusula for especificada. As cláusulas são aplicadas somente quando o problema é usado pela primeira vez com a instrução USE PROBLEM. A cláusula FROM especifica um problema existente a partir do qual copiar os símbolos incluídos. O problema-id é uma expressão de identificador. O estado suspenso e fixo para estes símbolos no problema especificado também é copiado. A cláusula INCLUDE especifica uma lista de variáveis, restrições e objetivos a serem incluídos no problema. Esses itens são incluídos com status padrão (unfixed e desprotegido) que substitui o status da cláusula FROM, se existir. Cada item é especificado com um dos seguintes formulários: inclui os itens especificados no problema. A expressão-identificador pode ser um nome de símbolo ou um símbolo de matriz com índice explícito. Se um símbolo de matriz é usado sem um índice, todos os elementos da matriz são incluídos. Inclui o subconjunto especificado de itens no problema. O item especificado pelo identificador-expressão é adicionado ao problema para cada membro do conjunto de índices. Os parâmetros fictícios do conjunto de índices podem ser usados ​​na indexação da expressão do identificador. Se a expressão-identificador é um símbolo de matriz sem indexação, o conjunto de índices fornece os índices para os locais incluídos. As declarações a seguir declaram alguns problemas com uma variável x e objetivos diferentes para ilustrar algumas das formas de incluir os componentes do modelo. Observe que as instruções usam o problema START pré-declarado para evitar redefinir o objetivo em prob2 quando o objetivo z3 é declarado. Consulte a seção Vários subproblemas para obter mais detalhes sobre o processamento de problemas. VAR Declaração VAR var-decl. Var-decl A declaração VAR declara uma ou mais variáveis ​​de otimização. Várias instruções VAR são permitidas. Não é permitido que uma variável tenha o mesmo nome de um parâmetro ou restrição. Cada var-decl especifica um nome de variável. O nome pode ser seguido por uma especificação de conjunto de índice de matriz e, em seguida, opções variáveis. Os parâmetros manequins declarados na especificação do conjunto de índices podem ser usados ​​nas seguintes opções de variáveis. Aqui está a sintaxe para um var-decl. Por exemplo, o código a seguir declara um grupo de 100 variáveis, x1 x100. Aqui estão as opções de variáveis ​​disponíveis: define um valor inicial para a variável. A expressão é usada apenas na primeira vez que o valor é necessário. Se nenhum valor inicial for especificado, então 0 é usado por padrão. Define um limite inferior para o valor da variável. O limite inferior padrão é. Define um limite superior para o valor da variável. O limite superior padrão é. Solicita que o solver atribua à variável um valor inteiro. Solicita que o solver atribuir a variável um valor de 0 ou 1. Por exemplo, o código a seguir declara uma variável que tem um valor inicial de 0,5. A variável está limitada entre 0 e 1: Os valores dos limites podem ser determinados mais tarde usando referências sufixadas à variável. Por exemplo, o limite superior para a variável x pode ser referido como x. ub. Além disso, as opções de limites podem ser substituídas por atribuição explícita ao nome da variável sufixada. Os sufixos são descritos mais adiante na seção Sufixos. Quando usado em uma expressão, um nome de variável unsuffixed refere-se ao valor atual da variável. As variáveis ​​não sufocadas não são permitidas nas expressões para opções que definem limites de variáveis ​​ou valores iniciais. Essas expressões têm valores que devem ser corrigidos durante a execução do solver. Cada ambiente operacional tem seu próprio tipo de delimitadores de registro em arquivos externos. Os delimitadores de registro são incompatíveis entre ambientes operacionais. Portanto, os delimitadores de registro apropriados para o ambiente de destino são adicionados ao arquivo copiado pelo procedimento DOWNLOAD. Os hosts CMS e OS390 usam o conjunto de caracteres EBCDIC outros ambientes operacionais usam um conjunto de caracteres ASCII. Conseqüentemente, se os arquivos são baixados do CMS ou OS390 para um sistema baseado em ASCII sem qualquer conversão de caracteres, os arquivos baixados não podem ser interpretados pelo ambiente de destino. SASCONNECT resolve o problema EBCDICASCII convertendo arquivos automaticamente. O procedimento DOWNLOAD converte texto para o formato do host local. Há momentos em que essas conversões de arquivos não são desejáveis. Por exemplo, talvez seja necessário fazer o upload de arquivos executáveis ​​do host local para o host remoto e depois fazer o download deles para o mesmo ou para um host local diferente. Você pode fazer isso para fins de backup ou para enviar arquivos para outros usuários. Quando você não deseja que um arquivo seja traduzido para outro conjunto de caracteres ou delimitadores de registros inseridos, você pode usar a opção BINARY para impedir a conversão automática. Quando você especifica a opção BINARY em uma instrução PROC DOWNLOAD, SASCONNECT transfere o arquivo em forma de imagem binária (daí, a palavra-chave BINARY). Exemplo da opção BINARY Este exemplo usa uma instrução PROC DOWNLOAD para baixar um arquivo externo do host remoto para o host local. Observe que a opção BINARY é incluída para suprimir a conversão de conjunto de caracteres e para impedir a inserção de registro-delimitador:

No comments:

Post a Comment