Arquivo da tag: PL/SQL

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:xampphtdocscode.php on line XXX

Este problema na maioria das vezes é causado por uma consulta incorreta, desta forma ela não está podendo retornar dados e montar o recordset.

Imprima a consulta que você está tentando realizar utilizando o comando echo (no PHP) e execute-a no banco de dados através de um aplicativo como o phpMyAdmin, HeidiSQL, etc.

No meu caso, o erro da consulta foi a falta de uma virgula entre os campos que eu estava tentando consultar (d.Code e d.Title):

SELECT
    d.Code
    d.Title
FROM
    document d
    INNER JOIN project p ON (d.ProjectID = p.ID)
WHERE
    p.Code = 'cf23df2207d99a74fbe169e3eba035e633b65d94'

Como criar um campo autoincremental no Oracle PL/SQL

O Oracle não tem campos auto incrementais, para simular esta funcionalidade é necessário criar “Sequences”:

CREATE SEQUENCE seqFuncionarios
INCREMENT BY 1
START WITH 1
MAXVALUE 99999
NOCACHE
NOCYCLE;

Para utilizar, a cada linha adicionada ele irá aumentar em 1 (INCREMENT BY 1) o valor desta “sequence”.

INSERT INTO FUNCIONARIOS (ID, NOME) VALUES (seqFuncionarios.nextVal; 'João');
INSERT INTO FUNCIONARIOS (ID, NOME) VALUES (seqFuncionarios.nextVal; 'Roberto');

João terá ID igual a 1 (START WITH 1) e Roberto terá o ID igual a 2 (INCREMENT BY 1: 1 + 1 = 2).

ORA-01830: a imagem do formato da data termina antes de converter a string de entrada inteira

ORA-01830: a imagem do formato da data termina antes de converter a string de entrada inteira
01830. 00000 -  "date format picture ends before converting entire input string"
*Cause:    
*Action:

Causa 01: Você deve estar utilizando uma data inválida. Exemplo: 31/06/2016 (Quando o mês em 2016 vai até dia 30);

Como utilizar cursor no PL SQL

Segue abaixo um exemplo básico do uso de cursor na linguagem PL/SQL

DECLARE

  CURSOR Funcionarios IS

      SELECT
        matricula
        nome
      FROM
        funcionario

  registroFuncionario Funcionarios%Rowtype;

BEGIN

     OPEN Funcionarios;

     LOOP
            Fetch Funcionarios Into registroFuncionario;

            EXIT WHEN Funcionarios%NotFound;

              Dbms_Output.Put_Line ('Funcionário: ' || registroFuncionario.matricula || ' - ' || registroFuncionario.nome );

      END LOOP;

      CLOSE Funcionarios;

END;