Gerenciador de dados de objetos
Object Data Manager (ODM) é um gerenciador de dados destinado a armazenar informações do sistema. As informações são armazenadas e mantidas como objetos com características associadas.
Também é possível usar o ODM para gerenciar dados para programas de aplicativos
Dados do sistema gerenciados pelo ODM incluem:
- Informações de configuração do dispositivo
- Exibir informações para SMIT (menus, seletores e diálogos)
- Dados vitais do produto para procedimentos de instalação e atualização
- Informações de configuração de comunicações
- Informações de recursos do sistema
É possível criar, incluir, bloquear, armazenar e alterar, obter, mostrar, excluir e eliminar objetos e classes de objetos com ODM. Comandos ODM fornecem uma interface da linha de comandos para essas funções. As sub-rotinas ODM acessam essas funções a partir de um programa aplicativo.
Algumas classes de objetos são fornecidas com o sistema. Essas classes de objetos são discutidas na documentação para os produtos do sistema específico que as fornecem.
ODM classes de objeto e armazenamento de objeto
Os componentes básicos do ODM são classes de objeto e objetos Para gerenciar classes de objetos e objetos, você usa os comandos e sub-rotinas do ODM Especificamente, você usa o criar e adicionar recursos dessas interfaces para construir classes de objetos e objetos para armazenamento e gerenciamento de seus próprios dados.
| Termo | Descrição |
|---|---|
| classe de objeto | Um grupo de objetos com a mesma definição. Uma classe de objeto compreende um ou mais descritores. É semelhante a uma tabela. Cada classe de objeto que você cria com um comando odmcreate ou odm_create_class subroutine é armazenada em um arquivo como uma definição de linguagem C de uma matriz de estruturas. |
| Objeto | Um membro de uma classe de objetos. Trata-se de uma entidade que exige armazenamento e gerenciamento de dados. Ele é semelhante a um registro lógico em um banco de dados. Cada objeto que você adicionar à classe de objeto com um comando odmadd ou um subroutine odm_add_obj é armazenado como uma estrutura de linguagem C no mesmo arquivo. Você determina o diretório no qual irá armazenar esse arquivo quando você cria a classe de objeto. |
Uma classe de objeto é conceitualmente semelhante a uma matriz de estruturas, sendo que cada objeto é uma estrutura que é um elemento da matriz. Os valores estão associados com os descritores de um objeto quando o objeto é adicionado a uma classe de objeto. Os descritores de um objeto e seus valores associados podem ser localizados e alterados com recursos do ODM .
A seguir, um exemplo de manipulação de classes de objetos e objetos.
- Como criar uma classe de objetos chamadaFictional_Characters, digite:
class Fictional_Characters { char Story_Star[20]; char Birthday[20]; short Age; char Friend[20]; };Neste exemplo, o Fictional_Charactersclasse de objeto contém quatro descritores:Story_Star,BirthdayeFriend, que possuem um tipo de descritor de caráter e um comprimento máximo de 20 caracteres; eAge, com um tipo de descritor de curta duração. Para criar os arquivos de classe de objeto necessários pelo ODM, você processa esse arquivo com o comando odmcreate ou com a sub-rotina odm_create_class
- Uma vez que você cria uma classe de objeto, você pode adicionar objetos à classe usando o comando odmadd ou o subroutine odm_add_obj . Por exemplo, digite o código a seguir com o comando odmadd para adicionar os objetosCinderellaeSnow Whitepara oFictional_Charactersclasse de objeto, juntamente com valores para os descritores que herdam:
Fictional_Characters: Story_Star = "Cinderella" Birthday = "Once upon a time" Age = 19 Friend = "mice" Fictional_Characters: Story_Star = "Snow White" Birthday = "Once upon a time" Age = 18 Friend = "Fairy Godmother"A tabela Fictional_Characters mostra uma imagem conceitual doFictional_Charactersclasse de objeto com os dois objetos adicionadosCinderellaeSnow White.
Tabela 1. Caracteres Fictícios História Estrela (char) Aniversário (char) Idade (curta) Amigo (char) Cinderela Uma vez por vez 19 Camundões Branca de neve Uma vez por vez 18 Fada Madrinha Retrieved data for 'Story_Star = "Cinderella"' Cinderella: Birthday = Once upon a time Age = 19 Friend = Mice - Depois doFictional_Charactersclasse de objeto é criada e os objetosCinderellaeSnow Whitesão adicionados, os dados recuperados para'Story_Star = "Cinderella"'é:
Cinderella: Birthday = Once upon a time Age = 19 Friend = mice
Usando comandos do ODM
Ao usar o comando odmcreate ou odmdrop para criar ou soltar uma classe de objetos, especifique o diretório a partir do qual o arquivo de definição de classe será acessado usando um dos seguintes:
- Loja o arquivo no diretório padrão indicado por $ODMDIR, que é o diretório /etc/objrepos .
- Use o comando export para configurar a variável de ambiente ODMDIR para especificar um diretório para armazenamento.
- Use o comando unset para desconfigurar a variável de ambiente ODMDIR e o comando cd para alterar o diretório atual para aquele no qual você deseja que as classes de objeto sejam armazenadas. Em seguida, execute os comandos ODM nesse diretório. O arquivo definindo as classes de objetos será armazenado no diretório atual.
Ao usar o odmdelete, odmadd, odmchange, odmshow, ou odmget comando para trabalhar com classes e objetos, especifique o diretório contendo as classes de objetos usando um dos seguintes:
- Trabalhe com classes de objetos no diretório padrão indicado por $ODMDIR, que é o diretório /etc/objrepos .
- Use o comando export para configurar a variável de ambiente ODMDIR para especificar o diretório.
- A partir da linha de comando, use o comando export para configurar a variável de ambiente ODMPATH para uma string contendo uma lista separada por colon de diretórios a serem pesquisados para classes de objetos. Por exemplo:
Os diretórios no $ODMPATH são procurados apenas se o diretório indicado por $ODMDIR não contém a classe de objeto.$ export ODMPATH = /usr/lib/objrepos:/tmp/myrepos
Criando uma classe de objetos
Atenção: Fazer alterações em arquivos que definem classes de objetos do sistema e objetos pode resultar em problemas do sistema. Consulte o administrador do seu sistema antes de usar o diretório /usr/lib/objrepos como um diretório de armazenamento para classes de objetos e objetos.
- Crie a definição para uma ou mais classes de objetos em um arquivo ASCII. código de exemplo e saída doODM mostra um arquivo ASCII contendo várias definições de classe de objeto.
- Especificar o diretório no qual o objeto gerado deve ser armazenado.
"ODM Object Class e Object Storage" discutem os critérios usados no tempo de criação da classe de objeto para determinar o diretório no qual armazenar classes e objetos de objeto gerados. A maioria das classes de objeto do sistema e os objetos são armazenados no diretório /usr/lib/objrepos
Gere uma classe de objeto vazia executando o comando odmcreate com o arquivo ASCII de definições de classe de objeto especificado como o arquivo de entrada ClassDescriptionFile.
Adicionando objetos a uma classe de objetos
Atenção: Fazer alterações em arquivos que definem classes de objetos do sistema e objetos pode resultar em problemas do sistema. Consulte o administrador do seu sistema antes de usar o diretório /usr/lib/objrepos como um diretório de armazenamento para classes de objetos e objetos.
- Crie a classe de objeto para a qual os objetos serão adicionados. Veja Criando uma Classe de Objeto para obter instruções sobre a criação de uma classe de objetos.
- Crie as definições para um ou mais objetos. ODM código de exemplo e saída mostra um arquivo ASCII contendo várias definições de objeto.
- Especifique o diretório que contém a classe de objeto na qual os objetos gerados serão armazenados.
"ODM Object Class e Object Storage" discutem os critérios usados no momento da criação da classe de objeto para determinar o diretório no qual armazenar classes e objetos de objeto gerados... A maioria das classes de objeto do sistema e os objetos são armazenados no diretório /usr/lib/objrepos
- Inclua objetos em uma classe de objeto executando o comando odmadd com o arquivo ASCII de definições de objeto especificado como o arquivo de entradas InputFile ..
Bloquear classes de objetos
O ODM não bloqueia implicitamente classes de objetos ou objetos. A coordenação de bloqueio e desbloqueio é de responsabilidade dos aplicativos que acessam as classes de objetos. No entanto, o ODM fornece as sub-rotinas odm_lock e odm_unlock para controlar classes de objeto de bloqueio e desbloqueio por programas de aplicativos.
| Sub-rotina | Descrição |
|---|---|
| odm_lock | Processa uma string que é um nome de caminho e pode resolver em um arquivo de classe de objeto ou em um diretório de classes de objetos. Ele retorna um identificador de bloqueio e configura uma sinalização para indicar que a classe de objeto ou classes especificadas definidas pelo nome do caminho estão em uso. |
Quando a subroutine odm_lock configura a sinalização de bloqueio, ela não desabilite o uso da classe de objeto por outros processos. Se a colisão de uso é um problema em potencial, um programa de aplicativos deve aguardar explicitamente até que ele seja concedido um bloqueio em uma classe antes de usar a classe.
Outro aplicativo não pode adquirir um bloqueio no mesmo nome do caminho enquanto um bloqueio está em vigor. No entanto, um bloqueio em um nome de diretório não impede que outro aplicativo adquesse um bloqueio em um subdiretório ou os arquivos dentro desse diretório.
Para desbloquear uma classe de objetos bloqueados, use um subroutine odm_unlock chamado com o identificador de bloqueio retornado pela subroutine odm_lock .
Armazenando classes de objetos e objetos
Cada classe de objeto que você cria com um comando odmcreate ou odm_create_class subroutine é armazenada em um arquivo como uma definição de linguagem C de uma matriz de estruturas. Cada objeto que você adicionar à classe de objeto com um comando odmadd ou um subroutine odm_add_obj é armazenado como uma estrutura de linguagem C no mesmo arquivo.
Você determina o diretório no qual irá armazenar esse arquivo quando você cria a classe de objeto.
Os métodos de armazenamento variam de acordo com se comandos ou subroutines são usados para criar classes de objetos e objetos.
Atenção: Fazer alterações em arquivos que definem classes de objetos do sistema e objetos pode resultar em problemas do sistema. Consulte o administrador do seu sistema antes de usar o diretório /usr/lib/objrepos como um diretório de armazenamento para classes de objetos e objetos.
Usando as subroutines odm_create_class ou odm_add_obj
O subroutine odm_create_class ou odm_add_obj é usado para criar classes de objetos e objetos:
- Se houver um requisito específico para que o seu aplicativo armazene classes de objetos diferentes do especificado pela variável de ambiente ODMDIR , use a subroutine odm_set_path para redefinir o caminho. É fortemente recomendado que você use esta subroutine para configurar explicitamente o caminho de armazenamento sempre que criar classes de objetos ou objetos a partir de um aplicativo.
OU
- Antes de executar seu aplicativo, use o comando set a partir da linha de comandos para configurar a variável de ambiente ODMDIR para especificar um diretório para armazenamento.
OU
- Loja o arquivo no repositório de objetos usado para armazenar muitas das classes de objetos do sistema, o diretório /usr/lib/objrepos .
ODM Descritores
Um descritor do Object Data Manager (ODM) é conceitualmente semelhante a uma variável com um nome e um tipo. Quando uma classe de objeto é criada, seus descritores são definidos como nomes de variáveis com tipos de descritor ODM associados. Quando um objeto é adicionado a uma classe de objeto, ele obtém uma cópia de todos os descritores da classe de objeto. Os valores também estão associados a descritores de objetos já declarados.
O ODM suporta vários tipos de descritor:
| Descritor | Definição |
|---|---|
| descritor de terminal | Define um tipo de dados numérico ou numérico. |
| descritor de link | Define um relacionamento entre as classes de objetos |
| descritor de método | Define uma operação ou método para um objeto |
Utilize os descritores de um objeto e seus valores associados para definir critérios para recuperação de objetos individuais de uma classe de objeto. Formate os critérios de seleção transmitidos para o ODM conforme definido em ODM Procuras de Objetos. Não use o descritor de terminal binário em critérios de busca por causa de seu comprimento arbitrário.
ODM descritores de terminal
Os descritores de terminal definem os tipos de dados mais primitivos usados pelo ODM Um descritor de terminal é basicamente uma variável definida com um tipo de descritor de terminal ODM . Os tipos de descritor de terminais fornecidos pelo ODM são:
| Descritor | Definição |
|---|---|
| breve | Especifica um número 2-byte assinado. |
| longo | Especifica um número 4-byte assinado. |
| ulong | Especifica um número 4-byte não assinado. |
| binary | Especifica uma sequência de bits de comprimento fixo. O tipo de descritor de terminal binário é definido pelo usuário no horário de criação do ODM O tipo de descritor de terminal binário não pode ser utilizado em critérios de seleção. |
| caractere | Especifica uma cadeia de comprimento fixo, null-terminada. |
| vchar | Especifica cadeia de comprimento variável, null-terminada. O tipo de descritor de terminal vchar pode ser usado em critérios de seleção. |
| long64/ODM_LONG_LONG/int64 | Especifica um número 8-byte assinado. |
| ulong64/ODM_ULONG_LONG/uint64 | Especifica um número 8-byte não assinado. |
descritor de link doODM
O ODM descritor de link estabelece um relacionamento entre um objeto em uma classe de objeto e um objeto em outra classe de objeto.. Um descritor de link é uma variável definida com o tipo de descritor de link ODM .
Por exemplo, o código a seguir pode ser processado pelos recursos de criação do ODM para gerar as classes de objeto Friend_Table e Fictional_Characters :
class Friend_Table {
char Friend_of[20];
char Friend[20];
};
class Fictional_Characters {
char Story_Star[20];
char Birthday[20];
short Age;
link Friend_Table Friend_Table Friend_of Friends_of;
};A classe de objetos Fictional_Characters usa um descritor de link para fazer o link Friends_of descritores link para oFriend_Tableclasse de objeto. Para resolver o link, o descritor Friends_of recupera objetos na classe de objetos Friend_Table com os dados correspondentes em seus descritores Friend_of . O descritor de link na classe de objeto Fictional_Characters define a classe sendo vinculada a (Friend_Table), sendo o descritor vinculado a (Friend_of), e o nome do descritor de link (Friends_of) na classe de objetos Fictional_Characters .
O código a seguir poderia ser usado para adicionar objetos para as classes de objetos Fictional_Characters e Friend_Table :
Fictional_Characters:
Story_Star = "Cinderella"
Birthday = "Once upon a time"
Age = 19
Friends_of = "Cinderella" Fictional_Characters:
Story_Star = "Snow White"
Birthday = "Once upon a time"
Age = 18
Friends_of = "Snow White" Friend_Table:
Friend_of = "Cinderella"
Friend = "Fairy Godmother" Friend_Table:
Friend_of = "Cinderella"
Friend = "mice" Friend_Table:
Friend_of = "Snow White"
Friend = "Sneezy" Friend_Table:
Friend_of = "Snow White"
Friend = "Sleepy" Friend_Table:
Friend_of = "Cinderella"
Friend = "Prince" Friend_Table:
Friend_of = "Snow White"
Friend = "Happy"As tabelas a seguir mostram uma imagem conceitual das classes de objetos Fictional_Characters e Friend_Table , os objetos adicionados às classes e a relação de link entre eles.
| Story_Star (char) | Aniversário (char) | Idade (curta) | Amigos_de (link) |
|---|---|---|---|
| Cinderela | Uma vez por vez | 19 | Cinderela |
| Branca de neve | Uma vez por vez | 18 | Branca de neve |
Retrieved data for 'Story_Star = "Cinderella"
Cinderella:
Birthday = Once upon a time
Age = 19
Friends_of = Cinderella
Friend_of = Cinderella
Há um link direto entre as colunas "Friends_of" e "Friend_of" das duas tabelas. A tabela a seguir fornece uma imagem conceitual de um relacionamento de link entre duas classes de objetos.
| Friend_of (char) | Amigo (char) |
|---|---|
| Cinderela | Fada Madrinha |
| Cinderela | camundões |
| Branca de neve | Espirrado |
| Branca de neve | Sonolento |
| Cinderela | Príncipe |
| Branca de neve | Feliz |
Após as classes de objetos Fictional_Characters e Friend_Table são criadas e os objetos são adicionados, os dados recuperados paraStory_Star = 'Cinderella'seria:
Cinderella:
Birthday = Once upon a time
Age = 19
Friends_of = Cinderella
Friend_of = CinderellaPara ver a relação expandida entre as classes de objeto vinculado, use o comando odmget na classe de objetos Friend_Table . Os dados recuperados para oFriend_of = 'Cinderella'classe de objeto seria:
Friend_Table:
Friend_Of = "Cinderella"
Friend = "Fairy Godmother"
Friend_Table:
Friend_of = "Cinderella"
Friend= "mice"
Friend_Table:
Friend_of = "Cinderella"
Friend = "Prince"Descritor do métodoODM
O ODM descritor de método fornece a definição de uma classe de objeto com objetos que podem ter métodos ou operações associados.. Um descritor de método é uma variável definida com o tipo de descritor de método ODM .
O valor da operação ou do descritor de método para um objeto é uma sequência de caracteres que pode ser qualquer script de comando, programa ou shell executado por chamada de método. Um método ou operação diferente pode ser definido para cada objeto em uma classe de objeto. As operações em si não fazem parte do ODM; elas são definidas e codificados pelo programador de aplicativos
O método para um objeto é chamado por uma chamada para a subroutine odm_run_method . A chamada de um método é um evento síncrono, fazendo com que a operação ODM seja pausada até a operação ser concluída.
Por exemplo, o código a seguir pode ser inserido para os recursos de criação do ODM para gerar a classe de objeto Supporting_Cast_Ratings :
class Supporting_Cast_Ratings {
char Others[20];
short Dexterity;
short Speed;
short Strength;
method Do_This;
};No exemplo, oDo_Thisdescritor é um descritor de método definido para a classe de objeto Supporting_Cast_Ratings . O valor do descritor do método pode ser uma string especificando um comando, programa ou shell script para chamada futura por um subroutine odm_run_method .
O código a seguir é um exemplo de como adicionar objetos para a classe de objetos Supporting_Cast_Ratings :
Supporting_Cast_Ratings:
Others = "Sleepy"
Dexterity = 1
Speed = 1
Strength = 3
Do_This = "echo Sleepy has speed of 1" Supporting_Cast_Ratings:
Others = "Fairy Godmother"
Dexterity = 10
Speed = 10
Strength = 10
Do_This = "odmget -q "Others='Fairy Godmother'" Supporting_Cast_Ratings"A tabela a seguir mostra uma imagem conceitual daSupporting_Cast_Ratingsclasse de objeto com oDo_Thisdescritor de método e operações associadas a objetos individuais na classe.
| Outros (char) | Dexteridade (curto) | Velocidade (curta) | Comprimento (curto) | Do_Este (método) |
|---|---|---|---|---|
| Sonolento | 1 | 1 | 3 | echo Sleepy has speed of 1 |
| Fada Madrinha | 10 | 10 | 10 | odmget —q "Others='Fairy Godmother'"Supporting_Cast_Ratings" |
odm_run_method run of Sleepy's method displays
(using echo):
"Sleepy has speed of 1"Depois doSupporting_Cast_Ratingsclasse de objeto é criada e os objetos são adicionados, uma invocação (pelo subroutine odm_run_method ) do método definido paraSleepyfaria com que o comando echo fosse exibido:
Sleepy has speed of 1ODM pesquisas de objeto
Muitas rotinas do ODM requerem que um ou mais objetos em uma classe de objeto especificada sejam selecionados para processamento Você pode incluir critérios de busca na forma de qualificadores quando se seleciona objetos com determinadas rotinas.
- qualificador
- Um parâmetro de sequência de terminação nula em chamadas de sub-rotina ODM que fornece os critérios de qualificação para os objetos a serem recuperados
Os nomes do descritor e os critérios de qualificação especificados por este parâmetro determinam quais objetos da classe de objeto são selecionados para posterior processamento. Cada qualificador contém um ou mais predicados conectados com operadores lógicos. Cada predicado consiste em um nome de descritor, um operador de comparação e uma constante.
Um qualificador com três predicados unidos por dois operadores lógicos segue:
SUPPNO=30 AND (PARTNO>0 AND PARTNO<101)Neste exemplo, a cadeia inteira é considerada o qualificador. Os três predicados sãoSUPPNO=30,PARTNO>0ePARTNO<101, e o operador lógico e lógico é usado para aderir aos predicados. No primeiro predicado,SUPPNOé o nome do descritor em um objeto, o=(sinal de igual) é um operador de comparação, e30é a constante contra a qual o valor do descritor é comparado.
Cada predicado especifica um teste aplicado a um descritor que é definido para cada objeto na classe de objeto. O teste é uma comparação entre o valor do descritor de um objeto e a constante especificada. O primeiro predicado no exemplo mostra uma comparação = (igual a) entre o valor de um descritor(SUPPNO)e uma constante(30).
A parte do qualificador dentro de parênteses
PARTNO>0 AND PARTNO<101contém dois predicados unidos pelo operador lógico AND. Os comandosPARTNOdescritor é testado por um valor maior que 0 no primeiro predicado, depois testado por um valor menor que101no segundo predicado. Em seguida, os dois predicados são logicamente concatenados para determinar um valor para essa parte do qualificatório. Por exemplo, sePARTNOé o nome do descritor para um número de peça em um inventário da empresa, então esta parte do qualificador define uma seleção para todos os produtos com números de peças maiores que 0 e menos de 101.
Em outro exemplo, o qualificador:
lname='Smith' AND Company.Dept='099' AND Salary<2500pode ser usado para selecionar todos (em ODM, cada objeto) com um sobrenome de Smith que está no Departamento 099 e tem um salário inferior a $2500... Observe que oDeptnome do descritor é qualificado com o seuCompanyclasse de objeto para criar um descritor exclusivo.
Nomes do descritor em predicados ODM
No ODM, um nome do descritor não é necessariamente exclusivo Você pode usar um nome do descritor em mais de uma classe de objetos. Quando este é o caso, você especifica o nome da classe de objeto juntamente com o nome do descritor em um predicado para criar uma referência exclusiva ao descritor.
Operadores de comparação em predicados ODM
A seguir, os operadores de comparação válidos:
| Operador | Definição |
|---|---|
| = | Igual a |
| != | Diferente de |
| > | Maior que |
| >= | Maior que ou igual a |
| < | Menor que |
| <= | Menor que ou igual a |
| LIKE | Semelhante a; encontra padrões em dados string de caracteres |
As comparações podem ser feitas apenas entre tipos de dados compatíveis.
operador de comparação LIKE
O operador LIKE possibilita a busca por um padrão dentro de um tipo de descritor de char. Por exemplo, o predicado:
NAME LIKE 'ANNE'define uma busca pelo valorANNEno noNAMEdescritor em cada objeto na classe de objeto especificada. Neste caso, o exemplo é equivalente a:
NAME = 'ANNE'Você também pode utilizar o operador LIKE com os seguintes caracteres e convenções de correspondência de padrões:
- Usar o? (ponto de interrogação) para representar qualquer caractere único. O exemplo de predicado:
define uma busca por qualquer cadeia de três caracteres que tenha A como um segundo caractere no valor doNAMEdescritor de um objeto. Os valores do descritorPAM,DANePATtodos satisfazem esse critério de busca.NAME LIKE '?A?' - Use o * (asterisco) para representar qualquer cadeia de zero ou mais caracteres. O exemplo de predicado:
define uma busca por qualquer string que contenha o valorANNEno noNAMEdescritor de um objeto. Os valores do descritorLIZANNE,ANNETTEeANNEtodos satisfazem esse critério de busca.NAME LIKE '*ANNE*' - Use [] (colchetes) para combinar com qualquer um dos caracteres fechados dentro dos suportes. O exemplo de predicado:
define uma busca por qualquer valor do descritor que comece com S ou T noNAMEdescritor de um objeto.NAME LIKE '[ST]*'Use um-(sinal de menos) para especificar uma gama de caracteres. O exemplo de predicado:
define uma busca por qualquer valor do descritor que comece com qualquer um dos caracteres A, D, E, F, G, S, ou T.NAME LIKE '[AD-GST]*' - Use [!] (colchetes cadastreo uma marca de exclamação) para combinar com qualquer caractere único, exceto um desses enfechados dentro do colchete. O exemplo de predicado:
define uma busca por qualquer valor do descritor, exceto aqueles que começam com S ou T noNAMEdescritor de um objeto.NAME LIKE '[!ST]*'Você pode usar os caracteres e convenções de correspondência de padrões em qualquer combinação na string.
Constantes em predicados ODM
A constante especificada pode ser uma constante numérica ou uma constante de cadeia de caracteres:
- Constantes numéricas em predicados ODM consistem em um sinal opcional seguido por um número (com ou sem um ponto decimal), opcionalmente seguido por um expoente marcado pela letra E ou e. Se usada, a letra E ou e deve ser seguida por um expoente que pode ser assinado.
Algumas constantes numéricas válidas são:
2 2.545 0.5 -2e5 2.11E0 +4.555e-10 4E0 -10 999 +42O expoente E0 pode ser usado para especificar nenhum expoente.
As constantes de cadeia de caracteres devem ser encerradas em aspas simples:
'smith' '91'Todas as constantes de cadeia de caracteres são consideradas como ter um comprimento variável. Para representar uma única aspas dentro de uma constante de cadeia, use duas aspas simples. Por exemplo:
'DON''T GO'é interpretado como:
DON'T GO
E operador lógico para predicados
O operador lógico e lógico pode ser usado com predicados. Uso AND ou e para o operador lógico.
O operador lógico e lógico conecta dois ou mais predicados. O exemplo qualifier:
predicate1 AND predicate2 AND predicate3especificapredicate1logicamente concatenado compredicate2seguido do resultado, que é logicamente concatenado compredicate3.