标签: plsql

执行立即创建表和更新表

我正在使用execute immediate创建pl/sql中的临时表,并在表中插入为什么要创建表.

之后我更新了表格.但我得到错误表不存在,因为它不是创建表thr立即执行

示例代码---------

begin
  execute immediate 'create table t23 as  select ''1'' aa from dual'; 
  update t23 set aa ='2' where aa='1';
  COMMIT ;
end;
Run Code Online (Sandbox Code Playgroud)

plsql

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

触发错误:= ORA-04079:触发器规范无效

触发错误:= ORA-04079:触发器规范无效

导致该错误的代码如下:

CREATE OR REPLACE TRIGGER TRGBILLINGADDRESS 
AFTER INSERT OR DELETE OR UPDATE ON TBLMACCOUNTADDRESS 
    add1 wom.tbltaddress.address1%TYPE;
    add2 wom.tbltaddress.address2%TYPE;
    cityid wom.tbltaddress.city_id%TYPE;
    stateid wom.tbltaddress.state_id%TYPE;
    pincd wom.tbltaddress.pincode%TYPE;
BEGIN
   SELECT address1,address2,city_id,state_id,pincode
          INTO add1,add2,cityid,stateid,pincd  FROM wom.tbltaddress ta  WHERE ta.ID IN (
          SELECT vbac.billing_address_id
          FROM wom.vw_billaddresschange vbac, wom.tbltaddress ita
          WHERE vbac.billing_address_id = ita.ID
          AND vbac.lcid = parlcid);
   IF add1 = :NEW.address1 AND add2 = :NEW.address2 AND  cityid = :NEW.cityid AND  stateid = :NEW.stateid AND  pincode = :NEW.zip THEN            
          dbms_output.put_line('Address Already Exist in tbltaddress table'); …
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql

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

db2编程

我目前正在将一个MySql数据库移植到DB2.到目前为止,我已经能够迁移表,但不幸的是,需要手动迁移函数和触发器.我已经阅读了关于DB2的pl/sql,但DB2的express-c版本不支持它.有关如何将mysql函数和触发器转换为DB2的替代方法吗?

mysql db2 plsql

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

Oracle SQL Developer:PL/SQL:ORA-00903:表名无效

我收到此错误:

Error starting at line 2 in command:
BEGIN
  DELETE * FROM book_copies;
  DELETE * FROM books;
  /* more code here */
END;
Error report:
ORA-06550: line 2, column 10:
PL/SQL: ORA-00903: invalid table name
ORA-06550: line 2, column 3:
PL/SQL: SQL Statement ignored
ORA-06550: line 3, column 10:
PL/SQL: ORA-00903: invalid table name
ORA-06550: line 3, column 3:
PL/SQL: SQL Statement ignored
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:
Run Code Online (Sandbox Code Playgroud)

这是荒谬的,因为我的数据库中存在两个表.我可以:

SELECT * …
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql ora-06550

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

如何从plsql函数创建并返回游标?

我创建了一个plsql函数,我想创建一个游标并从函数返回此光标.然后我想在Java类中调用此函数并从游标中检索数据.注意:光标返回一行.我写了这样的东西,

CREATE OR REPLACE
FUNCTION FUNCTION1 ( emp_id IN NUMBER)RETURN cursor AS

  cursor newCursor(e_id number) is  
    select * from table1 where employee_id = e_id;        
    type refCursor is ref cursor;

  BEGIN

  open newCursor(emp_id);    
  loop
  exit when newCursor%notfound;   
    fetch newCursor into refCursor;  
  end loop;
  RETURN refCursor;

END FUNCTION1;
Run Code Online (Sandbox Code Playgroud)

如果我想返回游标,我应该使用什么返回类型?

plsql oracle11g

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

oracle中强弱的ref_cursor之间的区别

我想知道强弱之间的实际区别ref cursor.

Strong ref_cursor将始终用于返回值,并且编译器在编译期间知道结构,但在弱的情况下,ref cursor它不会返回值,并且编译器在编译期间不知道结构.

这是基本的区别,但我的问题是强者将返回什么值ref cursor以及将使用返回值的位置.

oracle plsql cursor

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

pl/sql - to_date不使用execute immediate参数

我想能够像这样执行我的下面的过程:

exec procname('29-JAN-2011');
Run Code Online (Sandbox Code Playgroud)

proc代码是:

PROCEDURE procname(pardate VARCHAR2) IS

  vardate DATE := to_date(pardate, 'DD-MON-YYYY');
  SQLS VARCHAR2(4000);

BEGIN    

  SQLS := 'SELECT cola, colb
             FROM tablea 
            WHERE TRUNC(coldate) = TRUNC(TO_DATE('''||pardate||''',''DD/MON/YYYY''))';

  EXECUTE IMMEDIATE SQLS;

END;
Run Code Online (Sandbox Code Playgroud)

它不断抛出错误:

ORA-00904:"JAN":标识符无效.

它编译,但它在我运行此命令时抛出错误:

EXEC procname('29-JAN-2011');
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql dynamic-sql ora-00904

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

Oracle:如何对查询进行排序以按正确顺序排列数月

我正在编写一个报告,我从前端调用了一个函数.我开始将月份信息作为从1到12开始的数字,所以我正在使用

substr(to_date(START_MONTH,'MM'),4,3)
Run Code Online (Sandbox Code Playgroud)

以1月,2月等形式获得月份,现在在我的函数中按开始月份进行分组,然后按开始月份进行排序,因此在输出中得到的值就像

4月,8月,12月由于按月的第一个字母顺序排序,如何从1月到12月开始正确的订单?

有什么建议?

另外如何对数字进行排序,以便2在1之后而不是在1之后?

sql oracle plsql

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

PL/SQL函数错误

我在这个功能上有错误.我不知道为什么它不起作用.

你能帮我吗?

CREATE OR REPLACE FUNCTION EMPNAM(empno in number) 
RETURN VARCHAR2 IS

  DECLARE nam VARCHAR2(40);

BEGIN

  SELECT BEZEICHNUNG 
    INTO nam 
    FROM PROJ_PROJEKT 
   WHERE PROJEKTID = empno;

 RETURN nam;

END EMPNAM;
Run Code Online (Sandbox Code Playgroud)

这是错误消息:

ERROR: Error at line 7: 
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:

   ( begin case declare end exception exit for goto if loop mod
   null pragma raise return select update while with
    continue close current delete fetch lock
   insert open rollback savepoint set sql execute …
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql function

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

Oracle函数编译错误,没有错误

我正在创建一个以sys身份登录的函数.

CREATE FUNCTION Core.Get_Contact_Code
(
       First_Name IN NVARCHAR2,
       Middle_Name IN  NVARCHAR2,
       Last_Name IN NVARCHAR2
) 
RETURN NVARCHAR2 
IS 
    Ret_Val NVARCHAR2(10);
    C_Code NVARCHAR2(10);

    CURSOR contact_cursor IS 
    SELECT Contact_Code FROM (
        SELECT Contact_Code
        FROM Core.Contacts
        WHERE
        Contact_Code LIKE UPPER(left(First_Name,2) ||
        CASE    
            WHEN Middle_Name IS NULL THEN left(Last_Name,3) 
            ELSE left(Middle_Name,1) || left(Last_Name,2) 
        END || '%')
        ORDER BY Contact_Code desc)
   WHERE ROWNUM=1;
BEGIN
    open contact_cursor;
    fetch contact_cursor into C_Code;
    close contact_cursor;

    IF C_Code IS NULL THEN
    Ret_Val := 
    UPPER(left(First_Name,2)||
        CASE    
            WHEN Middle_Name IS NULL …
Run Code Online (Sandbox Code Playgroud)

oracle plsql

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

标签 统计

plsql ×10

oracle ×7

sql ×5

cursor ×1

db2 ×1

dynamic-sql ×1

function ×1

mysql ×1

ora-00904 ×1

ora-06550 ×1

oracle11g ×1