pl sql cursor strings
Neste tutorial, aprenderemos o que é um Cursor PL SQL e conceitos relacionados como Cursores Implícitos e Explícitos, cursor para loop, etc. Também aprenderemos sobre Funções de String em PL / SQL:
No Coleções PL SQL tutorial do PL / SQL series , aprendemos sobre métodos de coleção, Varray, tabela aninhada e matriz associativa com a ajuda de exemplos de código.
Neste artigo, exploraremos os vários tipos de cursores que a PL / SQL possui. Também veremos a implementação de diferentes tipos de cursores com exemplos de código.
Além disso, discutiremos strings e algumas das funções de string integradas disponíveis no PL / SQL.
sql server 2012 entrevista perguntas e respostas para experientes
O que você aprenderá:
PL SQL Cursor
O Oracle dedicou locais de memória para a execução de instruções SQL e, em seguida, mantém as informações processadas, por exemplo , o número total de linhas atualizadas.
Um cursor em PL / SQL fornece um nome e atua como um ponteiro para a área de trabalho chamada área de contexto e, em seguida, usa suas informações. Ele mantém o número de linhas processadas pela instrução SQL. Essas linhas são chamadas de conjunto ativo. O tamanho do conjunto ativo é igual à contagem de linhas que atendem à condição.
Existem dois tipos de cursores listados abaixo:
- Cursor Implícito
- Cursor explícito
Cursores implícitos
Os cursores implícitos são alocados pelo Oracle por padrão durante a execução de instruções SQL. Ele contém as linhas afetadas pelas operações DML como UPDATE, DELETE e INSERT. Assim, os cursores implícitos são usados quando não temos um cursor explícito no lugar.
Enquanto estamos inserindo uma linha, o cursor mantém esses dados específicos. Da mesma forma, para operações de exclusão e atualização, as linhas afetadas são armazenadas pelos cursores. Os cursores implícitos não recebem nenhum nome e, portanto, não podem ser manipulados pelos desenvolvedores e os dados neles contidos não podem ser usados em qualquer lugar.
Os cursores atualizados mais recentes podem ser usados com a ajuda dos atributos do cursor. Esses atributos são as propriedades que ajudam a referir-se ao tipo de dados e à estrutura dos itens sem repetir suas definições. Todas as colunas e tabelas em um banco de dados têm características comuns de atributo (representado pelo sinal%) e podem ser usadas como sql% attribute_name.
Sim. Não. | Nome | Objetivos |
---|---|---|
7 | COMPRIMENTO (m) | Retorna a contagem do número de caracteres na string m. |
1 | %ENCONTRADO | Dá o resultado em booleano. Retorna verdadeiro se as instruções DELETE, INSERT, UPDATE ou SELECT afetam uma ou várias linhas. Ou então false é retornado. |
dois | %NÃO ENCONTRADO | Fornece o resultado em booleano e possui funcionalidade reversa de% FOUND. Retorna verdadeiro se as instruções DELETE, INSERT, UPDATE ou SELECT não afetam nenhuma linha. Ou então false é retornado. |
3 | %ESTÁ ABERTO | Dá o resultado em booleano. Retorna verdadeiro se o cursor estiver aberto no momento. Ou então false é retornado. |
4 | %CONTAGEM DE LINHAS | Dá a contagem do número de linhas obtidas nas instruções DELETE, INSERT, UPDATE ou SELECT. |
5 | %MODELO | Fornece o tipo de dados da coluna ou variável do banco de dados. |
6 | % ROWTYPE | Fornece o tipo de registro equivalente a uma linha do banco de dados. |
Vamos considerar uma tabela chamada TUTOR.
SELECT * FROM TUTOR;
Criamos uma tabela com a instrução SQL fornecida a seguir:
CREATE TABLE TUTOR( CODE INT NOT NULL, SUBJECT VARCHAR(15) NOT NULL, TEACHER VARCHAR(15), REVIEWS VARCHAR (10) NOT NULL, PRIMARY KEY (CODE) );
Valores inseridos nesta tabela com as instruções SQL fornecidas abaixo:
INSERT INTO TUTOR (CODE,SUBJECT,TEACHER,REVIEWS) VALUES (1, 'Automation', 'Mukul', 'five stars'); INSERT INTO TUTOR (CODE,SUBJECT,TEACHER,REVIEWS) VALUES (4, 'PLSQL', 'Anand', 'four stars'); INSERT INTO TUTOR (CODE,SUBJECT,TEACHER,REVIEWS) VALUES (2, 'Performance', 'Arvind', 'four stars');
Implementação do código com o cursor implícito:
DECLARE total_count number(30); BEGIN --updating a row UPDATE TUTOR SET TEACHER = 'Zen' where CODE = 1; -- result in boolean, true returned if no rows affected IF sql%notfound THEN dbms_output.put_line('no subjects fetched'); -- result in boolean, true returned if any rows affected ELSIF sql%found THEN -- count the number of rows affected rows affected total_count := sql%rowcount; dbms_output.put_line( total_count || ' teacher name updated '); END IF; END; /
A saída do código acima deve ser:
Vamos agora verificar as mudanças refletidas na tabela denominada TUTOR.
Estamos usando uma instrução SQL para obter as colunas da tabela:
SELECT * FROM TUTOR;
Assim, vemos que conforme apontado pelo cursor, o nome do professor com código = 1, é atualizado para o Zen.
Cursores explícitos
Os desenvolvedores podem ter sua própria área de contexto definida pelo usuário para executar operações DML. Assim, eles podem exercer mais poder sobre ele. A seção de declaração do bloco de código PL / SQL contém cursores explícitos. Normalmente é construído em operações SELECT que buscam várias linhas.
Sintaxe do cursor explícito:
DECLARE CURSOR <> IS <> <> BEGIN OPEN <>; FETCH <> INTO ; . . CLOSE ; END;
O Cursor explícito funciona nos processos listados abaixo:
# 1) Declaração do cursor para inicialização da memória. Aqui, uma área de contexto nomeada é criada que serve como um nome de cursor.
Sintaxe:
CURSOR tutorial_s IS SELECT code FROM TUTORIAL;
#dois) Abertura do cursor para alocação de memória . Um cursor agora está disponível para buscar as linhas atualizadas do banco de dados.
Sintaxe:
OPEN tutorial_s;
# 3) O cursor é buscado para obter os dados. Depois de realizada a operação SELECT, as linhas obtidas são colocadas na memória alocada e agora são consideradas como conjuntos ativos. O cursor pode acessar uma linha por vez.
Sintaxe:
FETCH tutorial_s INTO c_code;
# 4) O cursor é finalmente fechado para liberar a memória alocada. Como todos os registros são obtidos um a um, o cursor é fechado para liberar a memória da área de contexto.
Sintaxe:
CLOSE tutorial_s;
Implementação de código com cursor explícito:
DECLARE -- cursor declaration CURSOR t_tutorials is SELECT code, subject, teacher FROM Tutor; t_code Tutor.code%type; t_subject Tutor.subject%type; t_teacher Tutor.teacher%type; BEGIN -- opening a cursor OPEN t_tutorials; LOOP -- fetching values from cursor FETCH t_tutorials into t_code, t_subject, t_teacher; EXIT WHEN t_tutorials%notfound; -- printing in console dbms_output.put_line('Code is: ' || t_code || ' ' || 'Subject is: ' || t_subject || ' Teacher is: ' || t_teacher); END LOOP; CLOSE t_tutorials; END; /
A saída do código acima deve ser:
Cursor For Loop
Ao trabalhar com cursores explícitos, podemos usar o loop FOR em vez de usar instruções como FETCH, OPEN e CLOSE. O loop FOR do cursor possui o índice do loop como um registro que aponta para a linha obtida do banco de dados. Em seguida, após abrir o cursor, ele busca várias linhas de dados repetidamente do conjunto de resultados nos campos de registro.
Finalmente, o cursor é fechado após todas as linhas serem obtidas. Usamos um sinal de ponto (.) Para nos referir a cada campo no registro. (.) o sinal de ponto é realmente usado para selecionar um componente.
A sintaxe para o loop Cursor For:
DECLARE CURSOR c IS SELECT code, subject, price FROM Tutorial; ... BEGIN FOR Tutorial_rec IN c LOOP ... price_sum:= price_sum + Tutorial_rec.price; END LOOP;
Aqui, o loop Cursor FOR declara ‘ Tutorial_rec ’ como um registro.
Cursor de variáveis
Uma variável de cursor é usada para referir-se à linha presente no conjunto de resultados que possui mais de uma linha. Pode ser usado para qualquer tipo de consulta. É semelhante a uma variável do PL / SQL, onde podemos atribuir valores e podem ser passados por meio de um subprograma no banco de dados. Assim, as variáveis do cursor fornecem muita flexibilidade e os dados podem ser obtidos em um processo centralizado.
Strings PL SQL
As strings em PL / SQL são um grupo de caracteres em uma ordem específica. O tamanho da string pode ou não estar disponível. Os caracteres que podem fazer parte de uma string podem ser caracteres especiais, espaços em branco, números e alfanuméricos. Portanto, é um conjunto de símbolos escolhidos de um grupo de personagens.
Existem três categorias de strings no PL / SQL. Eles estão listados abaixo:
- String de comprimento variável: O comprimento da string não pode exceder 32.767 e não pode haver preenchimento para a string.
- String de comprimento fixo : O comprimento da string é mencionado na declaração da string. A string é preenchida à direita com espaços para acomodar o comprimento especificado da string.
- Objetos Grandes de Personagem (CLOB): Esta é uma string de comprimento variável com tamanho de até 128 TB.
As strings em PL / SQL podem ser literais ou variáveis. Os símbolos de cotação são usados para literais.
Sintaxe:
'This is Software Testing Help'
Além disso, temos a opção de adicionar uma citação em nosso literal de string. Isso é obtido mantendo duas aspas simples consecutivas.
Sintaxe:
'We can''t go there'
Podemos descrever delimitadores definidos pelo usuário para literal de string prefixando-o com uma letra 'q'.
Sintaxe:
q'(We can't go there)'
Declaração de variáveis de string
Existem vários tipos de dados em PL / SQL como NCHAR, CHAR, VARCHAR, VARCHAR2, CLOB e NCLOB. Os tipos de dados do conjunto de caracteres nacionais são prefixados com N. Eles são usados para armazenar caracteres Unicode.
Em uma string de comprimento variável, o limite máximo do comprimento da string deve ser mencionado.
Sintaxe:
DECLARE subject varchar(10);
Isso significa que o assunto variável é capaz de conter até 10 caracteres e não mais do que isso. No caso em que o comprimento máximo é omitido, é gerado um erro de compilação.
Em uma string de comprimento fixo, o tipo de dados CHAR pode ser usado. Não é necessário definir o comprimento máximo de uma corda de comprimento fixo. Se o limite for omitido, o Oracle assume o valor padrão de 1.
Sintaxe:
DECLARE subject char := 'P';
Se você declarar uma variável CHAR com comprimento superior a 1, o Oracle, por padrão, preenche o valor que armazenamos nessa variável com espaços. Isso é feito até que o comprimento máximo especificado seja atingido.
Para fazer uma declaração para um objeto grande de caractere, CLOB é usado. O comprimento máximo não precisa ser mencionado aqui e o comprimento é definido pelo próprio banco de dados Oracle e depende do tamanho do bloco do banco de dados.
Sintaxe:
DECLARE l CLOB;
Diretrizes para escolher tipos de dados em PL / SQL:
- Se estamos lidando com valores que sempre têm um comprimento fixo, por exemplo, o número de telefone celular que tem comprimento e formato constantes, devemos usar o tipo de dados CHAR ou NCHAR.
- Caso contrário, devemos usar o tipo de dados VARCHAR2 ou NVARCHAR2.
- Se estivermos lidando com uma string com mais de 32.767 caracteres, devemos usar o tipo de dados CLOB ou NCLOB.
Implementação de código com strings:
DECLARE subject varchar2(30); teacher varchar2(40); syllabus clob; options char(1); BEGIN -- Initializing values to variables subject := 'Selenium'; teacher := 'Arun'; syllabus := 'Java, WebDriver Methods, Synchronization, WebTables.'; options := 'S'; -- checking condition and if true IF options = 'S' THEN -- printing in console dbms_output.put_line(subject); dbms_output.put_line(teacher); dbms_output.put_line(syllabus); END IF; END; /
A saída do código acima deve ser:
Funções e operadores PL / SQL em string
Sim. Não. | Nome | Objetivos |
---|---|---|
1 | CONCAT (i, j) | Anexa as strings iej e retorna a nova string. |
dois | ASCII (n) | Retorna o valor ASCII equivalente de n. |
3 | CHR (n) | Retorna o caractere junto com o valor ASCII equivalente de n. |
4 | INSTR (i, x, início, n) | Encontra a substring i na string x e retorna a posição de ocorrência. O início refere-se à posição inicial da pesquisa e é um parâmetro opcional. O n é a enésima ocorrência da string e também é um parâmetro opcional. |
5 | INSTRB (i) | Retorna a posição de uma substring em uma string em bytes. |
6 | INITCAP (k) | Converte o caractere inicial de palavras individuais na string k em maiúsculas e, em seguida, retorna a string. |
8 | LENGTHB (n) | Retorna a contagem dos caracteres na string m em bytes para o conjunto de caracteres de byte único. |
9 | LTRIM (n, x) | Remove x caracteres da esquerda da string n. O x é um parâmetro opcional se não fornecido, remove todos os espaços iniciais da string n. |
10 | RTRIM (n, x) | Remove x caracteres da direita da string n. O x é um parâmetro opcional, se não fornecido, remove todos os espaços finais da string n. |
onze | TRIM ((trim_char FROM) x); | Remove espaços ou caracteres mencionados do início, final ou ambas as extremidades da string x. |
12 | INFERIOR (i) | Converte os caracteres da string i em minúsculas e, em seguida, retorna a string. |
13 | SUPERIOR (i) | Converte os caracteres da string i em maiúsculas e, em seguida, retorna a string. |
14 | LPAD (i, l, x) | Acolchoa a corda x para a esquerda para aumentar o comprimento da corda i em l. O parâmetro x é opcional, se espaços omitidos forem preenchidos à esquerda da string i. |
quinze | RPAD (i, l, x) | Acolchoa a corda x para a direita para aumentar o comprimento da corda i em l. O parâmetro x é opcional, se espaços omitidos forem preenchidos à direita da string i. |
16 | NANVL (n, val) | Retorna val se n for igual ao valor NaN, caso contrário, n é retornado. |
17 | NLSSORT (i) | Modifica o método de classificação de caracteres. Deve ser mencionado antes de qualquer função NLS, caso contrário, a classificação padrão será feita. |
18 | NLS_INITCAP (i) | Semelhante em funcionalidade à função INITCAP, mas pode ter um tipo diferente de técnica, conforme mencionado na função NLSSORT. |
19 | NLS_LOWER (m) | Semelhante em funcionalidade à função LOWER, mas pode exigir um tipo diferente de técnica, conforme mencionado na função NLSSORT. |
vinte | NLS_UPPER (m) | Semelhante em funcionalidade à função UPPER, mas pode levar um tipo diferente de técnica, conforme mencionado na função NLSSORT. |
vinte e um | NVL (n, val) | Retorna val se x for igual ao valor NULL, caso contrário, n é retornado. |
22 | NVL2 (n, val, val2) | Retorna val se x não for igual ao valor NULL; caso contrário, se x for igual a NULL, val2 é retornado. |
2,3 | SOUNDEX (i) | Retorna uma string com a representação vocal de i. |
24 | SUBSTR (n, início, l) | Retorna uma substring da string n que começa na posição mencionada no início. O parâmetro l é opcional e representa o comprimento da substring. |
25 | SUBSTRB (n) | Semelhante em funcionalidade à função SUBSTR, mas os parâmetros estão em bytes e não em caracteres para um sistema de caractere de byte único. |
26 | REPLACE (n, s, r) | Substitui as ocorrências de s pela string r na string n. |
Implementação de código com algumas funções de string:
DECLARE name varchar2(30) := ' software testing help!'; BEGIN dbms_output.put_line(UPPER(name)); dbms_output.put_line(LOWER(name)); dbms_output.put_line(LENGTH(name)); dbms_output.put_line(INITCAP(name)); /* get the first word in the string */ dbms_output.put_line ( SUBSTR (name, 1, 8)); /* get the location of the first 'w' */ dbms_output.put_line ( INSTR (name, 'w')); /* replace a string */ dbms_output.put_line ( REPLACE( name, 'help', 'solution')); /* trim a string from right */ dbms_output.put_line ( RTRIM(name,'!')); /* trim a string */ dbms_output.put_line ( TRIM(name)); END; /
A saída do código acima deve ser:
melhor software de otimização grátis para windows 10
Explicação do código acima:
- A primeira saída é AJUDA DE TESTE DE SOFTWARE !. Retorna a string de entrada ‘Ajuda para teste de software!’ em maiúsculas com a ajuda de Função SUPERIOR.
- A segunda saída é ajuda para teste de software !. Retorna a string de entrada AJUDA DE TESTE DE SOFTWARE! em minúsculas com a ajuda de a função LOWER.
- A terceira saída 2,3 . Retorna o comprimento da string de entrada com a ajuda do Função LENGTH.
- A quarta saída é Ajuda para teste de software! Retorna o primeiro caractere de cada palavra da string de entrada em maiúsculas com a ajuda do Função INITCAP .
- A quinta saída é softwar. Retorna uma substring da string de entrada da primeira posição até um comprimento de 8, incluindo um espaço com a ajuda de Função SUBSTR .
- A sexta saída é 6 Retorna a posição de no na string de entrada com a ajuda do Função INSTR .
- A sétima saída é solução de teste de software !. Retorna uma nova string substituindo ajuda com solução na string de entrada com a ajuda do REPLACE função .
- A oitava saída é ajuda de teste de software. Retorna uma nova string cortando o caractere ! da direita da string de entrada com a ajuda de Função RTRIM .
- A nona saída é ajuda para teste de software !. Retorna uma nova string cortando os espaços iniciais e finais da string de entrada com a ajuda do Função TRIM .
Perguntas e respostas mais frequentes
P # 1) O que é cursor em PL / SQL?
Responda: Depois que uma instrução SQL é executada, o banco de dados Oracle constrói uma memória chamada área de contexto. Um cursor possui as informações processadas de uma instrução select e contém as linhas atualizadas por essa operação SELECT.
Q # 2) O que é um cursor e tipo de cursor?
Responda: Depois que uma instrução SQL é executada, o banco de dados Oracle constrói uma memória chamada área de contexto, que é uma área de trabalho temporária. Existem duas categorias de cursores - cursor implícito e cursor explícito.
P # 3) Como executo um cursor no Oracle?
Responda: Para executar um cursor no Oracle, a sintaxe é: ABRIR<> . O CURSORNAME refere-se ao nome do cursor disponível na seção de declaração do bloco de código PL / SQL.
P # 4) Podemos declarar o cursor dentro de begin?
Responda: Sim, podemos declarar mais de um cursor em um bloco de código PL / SQL.
P # 5) Como você encontra o comprimento de uma string no PL / SQL?
Responda: Podemos encontrar o comprimento de uma string em PL / SQL com a ajuda da função LENGTH (str). Aqui str é a string para a qual queremos obter o comprimento. Esta função retorna um valor numérico.
P # 6) O que é SUBSTR no Oracle?
Responda: A função SUBSTR fornece um determinado número de caracteres de uma posição específica de uma string. A sintaxe é SUBSTR (n, início, l). Ele retorna uma substring da string n que começa na posição mencionada no início. O parâmetro l é opcional e representa o comprimento da substring.
Conclusão
Neste tutorial, discutimos em detalhes alguns dos conceitos básicos da PL / SQL.
Cobrimos os seguintes tópicos listados abaixo:
- PL SQL Cursor: Cursor Implícito e Cursor Explícito
- Strings PL / SQL.
- Funções e operadores em string.
<< PREV Tutorial | PRÓXIMO Tutorial >>
Leitura recomendada
- Tutorial PL SQL para iniciantes com exemplos | O que é PL / SQL
- Tutorial de comprimento de array Java com exemplos de código
- Tutorial de tratamento de exceções C # com exemplos de código
- Java 'this' Palavra-chave: Tutorial com exemplos de código
- Tutorial Python DateTime com exemplos
- Uso do Cursor no MongoDB com Exemplos
- Tutorial de funções / métodos C # com exemplos de código
- Tutorial de criação de visualização do MySQL com exemplos de código