标签: plsql

插入触发器后发生变异错误

下面的代码给出了一个变异错误.任何人都可以帮助解决这个问题.

    CREATE OR REPLACE TRIGGER aso_quote_cuhk_trigger
    BEFORE INSERT
    ON aso.aso_quote_headers_all
    FOR EACH ROW
    BEGIN
     UPDATE aso.aso_quote_headers_all
     SET quote_expiration_date=sysdate+90
     where quote_header_id=:new.quote_header_id;
    END;
    /
Run Code Online (Sandbox Code Playgroud)

oracle plsql

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

PLSQL:使用合并语句时获取更新vs插入的记录数

无论我的记录如何使用SQL%ROWCOUNT插入或更新,Merge将始终为您提供合并的记录数.

但是如何找出实际插入的记录数与实际更新的记录数.

我试过这个帖子中的选项,但这似乎不起作用 -

https://asktom.oracle.com/pls/asktom/f?p=100:11:0::NO::P11_QUESTION_ID:122741200346595110

有帮助吗?

sql oracle plsql

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

使用PL/SQL将日期值更改为mm/dd/yyyy

在我的本地Oracle 11g数据库中有以这种格式的日期:

01-JUL-85
Run Code Online (Sandbox Code Playgroud)

如何使用PL/SQL将其更改为此格式(mm/dd/yyyy):

7/01/1985
Run Code Online (Sandbox Code Playgroud)

谢谢......

oracle plsql oracle11g

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

PL/SQL过程 - 值太多

我确信这很简单,但我是PL/SQL的新手,这让我感到困惑.

我写了一个简单的存储过程来返回一些关于客户的值.蝙蝠,%rowtype它们不会作为保留关键字出现,但编译器没有将这些标记为错误.

它,但是,忽略了整个SQL语句标记线FROM demo_customers作为too many values.即使我尝试将其缩小为仅选择一列,它仍然会给我相同的错误.

create or replace
PROCEDURE GETCUSTOMER 
(
  arg_customerID demo_customers.customer_id%type,
  returnRec OUT demo_customers%rowtype
) 
AS
BEGIN
  SELECT  customer_id, cust_first_name, cust_last_name, cust_email
  INTO    returnRec
  FROM    demo_customers
  WHERE   customer_id = arg_customerID ;

END GETCUSTOMER;
Run Code Online (Sandbox Code Playgroud)

oracle plsql stored-procedures

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

ORACLE SDO_GEOMETRY ToString()?

我有一个我正在编写的.Net系统,它需要能够从数据库中检索oracle几何字段.在我的SQL语句中是否有任何方法可以将几何类型转换为字符串,以便我可以在.Net端处理它.目前我无法获取数据,因为它不是一个有效的数据类型放入我的OLEDB阅读器,因此它必须转换为数据库端.

select CS_BOUNDS from MDSYS.CS_SRS where SRID = 4326
Run Code Online (Sandbox Code Playgroud)

谢谢

.net sql oracle plsql oracle-spatial

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

Sql loader条件

我可以在SQL LOADER中执行类似的操作吗?

LOAD DATA
INFILE 'table_with_one_million_rows.dat'
INTO TABLE TABLE_WITH_ONE_MILLION_ROWS
FIELDS TERMINATED BY ','
TRAILING NULLCOLS
(
   COL1                     DECIMAL 
 , COL2                     DECIMAL IF COL1='X' '1' else '0'
 , COL3                     CHAR 

)
Run Code Online (Sandbox Code Playgroud)

oracle plsql sql-loader

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

将两个表与不同的列组合在一起

我必须选择我想要使用UNION组合的请求:

表1:Table_a,table_b和table_c之间的连接

id_table_a   desc_table_a   table_b.id_user  table_c.field
-----------------------------------------------------------
1            desc1            1                 field1
2            desc2            2                 field2
3            desc3            3                 field3
Run Code Online (Sandbox Code Playgroud)

表2:它也是Table_a,table_b和table_c之间的连接,但它具有以下列:

id_table_a   desc_table_a   table_c.id_user  table_c.field
-----------------------------------------------------------
4            desc4            4                 field4
5            desc5            5                 field8
9            desc9            6                 field9
Run Code Online (Sandbox Code Playgroud)

两者之间的区别在于,在表1中我们有table_b.id_user和表2 table_c.id_user相反.

组合表

  id_table_a   desc_table_a     id_user  table_c.field
    -----------------------------------------------------------
    1            desc1            1                 field1
    2            desc2            2                 field2
    3            desc3            3                 field3
    4            desc4            4                 field4
    5            desc5            5                 field5
    9            desc9            6                 field6
Run Code Online (Sandbox Code Playgroud)

我已经有了加入请求,但两者之间的联合给了我

ORA-01790 expression must have same …
Run Code Online (Sandbox Code Playgroud)

oracle union plsql zend-framework

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

必须声明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万
查看次数

使用Oracle SQL检索字符串中的某些字符串

我正在使用Oracle SQL 11g R2尝试以下字符串搜索:

数据是:

| CN = aXYZApple-Au,OU =托管,OU =组,DC =核心,DC = dir,DC = abc,DC = com | CN = 31107427,OU =分发列表,OU =共享邮箱,DC =核心,DC = dir,DC = abc,DC = com | CN = ea90045052,OU = Groups,OU = eProfile,DC = core,DC = dir,DC = abc,DC = com | CN = S0901448,OU =分发列表,OU =共享邮箱,DC =核心,DC = dir,DC = abc,DC = com | CN = 00900887,OU =分发列表,OU =共享邮箱,DC =核心,DC = dir,DC = abc,DC = com | CN = NSMMMM,OU = LRP,OU =组,DC …

regex sql oracle plsql

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

pl/sql循环记录选择oracle plsql

我有一个select语句,我试图循环并根据select语句的条件递增一个变量,然后返回变量作为一个out所以我可以在一些前端代码中用它做一些事情.我正在使用oracle 11g,我正在看到一些方法可以做到这一点......但我不确定哪种方式最好.我有一些我想在下面做的事情,但由于混乱而再次停止.

首先我设置我的proc和'in variable'

PROCEDURE SEEKER (pMonkeyID IN Number, vMarkCounter OUT Number)
AS
BEGIN

CURSOR seeker_cur IS
    Select Mokney_approved, Monkey_vaulted 
    from MonkeyBookApps 
    where MonkeyID = pMonkeyID
    and Monkey_doc_type = 'BANANA' 
    order by docu_approv_timestamp,monkey_doc_type,monkey_doc_approved desc

OPEN seeker_cur;

begin

   OPEN Seeker_cur;
   vMarkCounter := 0;
Run Code Online (Sandbox Code Playgroud)

这是我不确定的部分.如果条件不满足,我应该循环然后退出,还是应该执行if语句并以某种方式确定是否有可能大于1的记录?如果是这样,那将如何运作?一种方式比另一种方式有益处吗?所以...我要sudo-code我要做的事情(下面):

FOR (however many records) in Seeker_cur
IF seeker_cur (not found) or (returns no records)

EXIT or (break for loop);
ELSE
LOOP

vMarkCounter := vMarkCounter + 1;

EXIT WHEN seeker_cur is out of records (somehow)
END …
Run Code Online (Sandbox Code Playgroud)

conditional plsql for-loop procedure oracle11g

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