标签: plsqldeveloper

当期望以下之一时遇到符号“TABLE”: := 。( @ % ; 在“TABLE”之前插入符号“:=”以继续。

我写了一个函数,看起来一切都很好,但我仍然收到错误,

以下是我的功能:

create or replace FUNCTION TRANSFERQTYBTNDATES 
(
  v_startDate IN DATE,
  v_endDate IN DATE,
  v_storeid IN NUMBER,
  v_areaid IN NUMBER
)
RETURN TransferQtyBtnDates_pkg.tt_TransferQtyBtnDates_type PIPELINED
AS
   v_temp SYS_REFCURSOR;
   v_temp_1 TT_TRANSFERQTYBTNDATES%ROWTYPE;

BEGIN
   TRUNCATE TABLE tt_TransferQtyBtnDates;

   INSERT INTO tt_TransferQtyBtnDates
      SELECT isb.ItemId ,
             SUM(isb.Quantity) TransQty  ,
             isb.ExpiryDate TransExpDates  
        FROM Issues iss
               JOIN IssuedBatches isb
                ON iss.IssueRegisterId = isb.IssueRegisterId
        WHERE iss.IssueType = 'TRANSFER ACCOUNT'
                AND iss.IssuedDate BETWEEN v_startDate AND v_endDate
                AND iss.AreaId = v_areaid
                AND iss.StoreId = v_storeid
        GROUP BY isb.ItemId,isb.Quantity,isb.ExpiryDate;

      OPEN v_temp FOR
      SELECT …
Run Code Online (Sandbox Code Playgroud)

plsqldeveloper

3
推荐指数
1
解决办法
8132
查看次数

关于sql报告

我正在做一个sql选择输出的假脱机.我有以下的SQL设置

        SET FEEDBACK OFF
        SET HEADING OFF
        SET LINESIZE 800
        SET PAGESIZE 50000
        SET TRIMSPOOL ON
        SET TERMOUT OFF
        SET ECHO OFF
Run Code Online (Sandbox Code Playgroud)

问题是在select语句输出之前有空行插入假脱机文件.不确定我需要添加什么SQL设置.

sql oracle plsql plsqldeveloper

2
推荐指数
1
解决办法
90
查看次数

必须声明PL/SQL标识符'string'

任何人都可以告诉我为什么这不会执行?

set serveroutput on ;
Declare
   TYPE type_emp IS RECORD(
        emp_name employees.last_name%TYPE,
        emp_salary employees.salary%TYPE);
     rec_emp type_emp;
   due_for_a_raise CHAR(1);
begin
   SELECT last_name, salary into rec_emp
   from employees
   where employee_id = 150;
   if emp_salary > 5000 then
      due_for_a_raise := 'Y';
     else
      due_for_a_raise := 'N';
   end if;
  dbms_output.putline(last_name);
  dbms_output.putline(salary);
  dbms_output.putline(due_for_a_raise);
end;  
Run Code Online (Sandbox Code Playgroud)

错误如下

Error report:
ORA-06550: line 11, column 6:
PLS-00201: identifier 'EMP_SALARY' must be declared
ORA-06550: line 11, column 3:
PL/SQL: Statement ignored
ORA-06550: line 16, column 23:
PLS-00201: identifier 'LAST_NAME' must be …
Run Code Online (Sandbox Code Playgroud)

oracle plsql oracle10g plsqldeveloper

2
推荐指数
1
解决办法
2万
查看次数

在PL/SQL中插入/更新

我在PL/SQL中创建了一个过程,它根据主键将数据从一个表插入另一个表.我的程序工作正常,但我无法弄清楚如果主键已经存在,我将如何更新我的表MAIN列CODE_NUMBER.
实际上我希望MAIN表的行在其具有主键时获得UPDATED,并在主键不存在时从REGIONS插入数据.

DECLARE
    variable number;
    id number;
    description varchar2 (100);

    CURSOR C1 IS
        select regions.REGION_ID variable
        from regions;

BEGIN
      FOR R_C1 IN C1 LOOP
            BEGIN
                select regions.REGION_ID,regions.REGION_NAME
                into id,description
                from regions
                where regions.REGION_ID = R_C1.variable; 
                ----If exists then update otherwise insert
                INSERT INTO MAIN( ID, CODE_NUMBER) VALUES( id,description);
                dbms_output.put_line( id ||' '|| 'Already Exists');
            EXCEPTION
                WHEN DUP_VAL_ON_INDEX THEN
                dbms_output.put_line( R_C1.variable);
            END;
      END LOOP;
END; 
Run Code Online (Sandbox Code Playgroud)

sql plsql oracle11g plsqldeveloper

2
推荐指数
1
解决办法
1万
查看次数

用pl\sql逐行读取clob

在我的项目中,我使用oracle作为主数据库,我遇到了解析clob的问题.所以假设我们有一个有价值的clob

   aaaaaa
   cccccc
   bbbbbb
Run Code Online (Sandbox Code Playgroud)

它存储在表格测试中......

我需要写plsql程序来获取这个clob并拆分它以便我将有三个项目的数组[aaaaaa,cccccccc,bbbbbbb].

有没有可能的解决方案?

oracle plsql plsqldeveloper

2
推荐指数
2
解决办法
6万
查看次数

PLSQL CLOBS变成变量

我正在尝试将a保存CLOB到变量中以执行提取等操作.我有这个代码:

DECLARE
  clob_rec CLOB;
  n_rec NUMBER:=100;
BEGIN
  SELECT LOB INTO clob_rec FROM table1 WHERE ID = 1234;
  n_rec := clob_rec.EXTRACT('//XPTO/text()', 'xmlns:XPTO').getNumVal();
END;
Run Code Online (Sandbox Code Playgroud)

我想保存多个值,XML如各种变量n_rec.如何获得"对象实例(CLOB)"来执行函数或方法extract()

oracle plsql oracle10g oracle11g plsqldeveloper

2
推荐指数
1
解决办法
1万
查看次数

带有游标的pl/sql varray

有人能告诉我这段代码有什么问题.我的目标是编写一个传递员工姓名的程序,将员工表中的所有姓名和工资加载到VARRAY中,然后在屏幕上打印出姓名和工资.

CREATE OR REPLACE PROCEDURE VARRAY_Q2 
(
  PNAME IN VARCHAR2  
, PSAL OUT NUMBER  
) AS 

--declare and create cursor

CURSOR emp_cur IS
SELECT ename,sal
FROM EMP;

  TYPE varray_emp IS VARRAY(14) OF emp_Cur%ROWTYPE;

  --Creating new instance of varray
  x_varray_emp varray_emp := varray_emp();
  v_counter NUMBER := 0;

BEGIN

  x_varray_emp.EXTEND;

  FOR empRecs IN emp_Cur LOOP

  --Insert data into the varray
  x_varray_emp(v_counter) := empRecs;

  dbms_output.put_line(v_counter);

  v_counter := v_counter + 1;
  END LOOP;

  --Loop through the varray and print out all the elements
  FOR …
Run Code Online (Sandbox Code Playgroud)

database oracle plsql plsqldeveloper

2
推荐指数
1
解决办法
8647
查看次数

如何将Oracle PL/SQL包中的电子邮件发送到多个接收器?

如何将Oracle PL/SQL包中的电子邮件发送到多个接收器?我在oracle包中有pl/sql程序,它只适用于一个接收器.我需要改进它的功能,让它可以同时向多个接收器发送电子邮件,如"To:David Festool; Peter Makita; John Dewalt".任何身体都可以帮助我,非常感谢!请提供修改后的代码.


procedure email(p_recip   in varchar2,
                p_subject in varchar2,
                p_message in varchar2) is

  c   utl_smtp.connection;
  msg varchar2(4000);

  procedure send_header(name in varchar2, header in varchar2) as
  begin
    utl_smtp.write_data(c, name || ': ' || header || utl_tcp.crlf);
  end;
begin
  --Open SMTP connection
  c := utl_smtp.open_connection('ExchangeServerName');

  -- Write SMTP header
  utl_smtp.helo(c, 'ExchangeServerName');
  utl_smtp.mail(c, 'Email@MyCompany.on.ca');
  utl_smtp.rcpt(c, p_recip);
  utl_smtp.open_data(c);
  send_header('From', '"Title" <Email@MyCompany.on.ca');
  send_header('To', p_recip);
  send_header('Subject', p_subject);
  send_header('Mime-Version', '1.0');
  send_header('Content-Type', 'multipart/mixed; boundary="DMW.Boundary.605592468"');

  -- Write MIME boundary line for the message body …
Run Code Online (Sandbox Code Playgroud)

oracle plsql oracle11g plsqldeveloper

2
推荐指数
1
解决办法
4万
查看次数

基于系统时间(DAY)触发

所以我触发如下

create or replace TRIGGER TWELVE_ONE 
BEFORE INSERT OR UPDATE OR DELETE
ON ORDERS
FOR EACH ROW 
DECLARE 
V_DAY VARCHAR2 (10); 
MyException exception; 

BEGIN 

SELECT TO_CHAR (SYSDATE, 'DAY') INTO V_DAY FROM DUAL; 
DBMS_OUTPUT.PUT_LINE(V_DAY); 

IF (V_DAY='SUNDAY') 
THEN 
raise_application_error(-20001, 'Today is Sunday. Order table cannot be altered'); 
end if;
END;
Run Code Online (Sandbox Code Playgroud)

这应该防止UPDATE,INSERT并且DELETE如果系统一天SUNDAY.从逻辑上讲,它似乎是正确的,但不幸的是它仍然允许插入.我在这做错了什么?我正在使用SQL Developer请帮助非常感谢

sql oracle oracle11g plsqldeveloper oracle-sqldeveloper

2
推荐指数
1
解决办法
120
查看次数

使用批量收集时设置LIMIT的值

我想知道我们是否有任何技术可以计算出需要为批量收集操作的LIMIT子句设置的值.例如下面,假设我们的光标有1000万条记录.我们可以为LIMIT子句设置的值是什么,以获得最佳性能.我们有什么方法可以计算它.

decalre
cursor c_emp is <some select query>

var  <variable> ;

begin
     open c_emp;
       loop
           fetch c_emp bulk collect into var limit 2;
           exit when c_emp%NOTFOUND;
      end loop;
     close c_emp;
  end;
Run Code Online (Sandbox Code Playgroud)

oracle plsql plsqldeveloper oracle11gr2

2
推荐指数
1
解决办法
2648
查看次数