小编APC*_*APC的帖子

为什么这个CREATE TABLE语句失败?

这个SQL查询有什么问题 -

CREATE TABLE emp_dept_join2
(
 employee_id Number,
 department_id Number,
 first_name Varchar2);
Run Code Online (Sandbox Code Playgroud)

我正进入(状态

ORA-00906:缺少左括号错误.

sql oracle

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

Oracle DB,为多个列创建唯一约束以进行插入,性能如何

朋友们,

我是DB的新手,我需要一些帮助/信息.我们的项目中有一个表"record_table",其中的值是使用C++代码插入的.

该表有多列,其中三列表示例如."serialNo,type,sub_type"C++代码为这些列的组合插入重复值(这些列不是该表的唯一或主要列).但是3列的组合应该是唯一的.

现在我们要确保不应插入此组合的重复项.我正在考虑为这些列添加唯一约束,以便在插入具有这些重复值的新记录时,它将不允许.

我认为这应该可行,但我怀疑它是否会达到性能,C++二进制文件每天运行并且它会插入大约200万条记录.将创建独特的约束命中性能.(意味着运行时间会减慢,或者因为表有数百万条记录将创建唯一约束,因为它必须对这些列进行哈希等)

如果可以,请建议.

database oracle performance

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

如何在Oracle中将动态参数传递给喜欢的运算符?

我需要根据数据之间的任何单词进行搜索。如何在存储过程中为此传递参数?

where like employeename concat(empname,'%')
Run Code Online (Sandbox Code Playgroud)

不起作用

它只会得到开始的emp名称...

oracle

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

在Oracle中向表中插入25k虚拟行的最佳实践

我试图通过生成自动增量数字将大约25k行插入表中.我的自动增量数是19位数.

例如,对于一行,我的查询如下所示:

insert into myTable(From_Value,To_Value) 
values('6001761093000000000','6001761093999999999');
Run Code Online (Sandbox Code Playgroud)

我的两列都是VARCHAR2(20 BYTE)数据类型.

如何通过自动递增From_ValueTo_Value?来编写用于插入大约25k行的优化代码?

提前致谢.

oracle plsqldeveloper oracle-sqldeveloper

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

SQL Max函数未返回正确的最大值

SQL max函数没有给出正确的结果

select max (liri_appid) from idea_interface; 
Run Code Online (Sandbox Code Playgroud)

结果是:90802但我知道它的最大值为15454545

我在运行order by子句时遇到的同样问题.结果即将到来

 1
 13
 2
 23
 4
 5
 6
 69
 777
 9
Run Code Online (Sandbox Code Playgroud)

不知道为什么.

sql oracle

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

如果删除的行具有未超过一年的datefin字段,我创建了一个触发器来引发错误

这是我的代码:

create or replace trigger tr_interdit
before delete on reservation
for each row
DECLARE
    V_res_date RESERVATION.DATEFIN%type;
begin
    SELECT DATEFIN into V_res_date
    FROM reservation
    where DATEFIN = :old.DATEFIN;

    if V_res_date<add_months(V_res_date,-12)
        then RAISE_APPLICATION_ERROR(-20001, 'Date fin na pas depasse un ans');
    end if;

end tr_interdit;
/
Run Code Online (Sandbox Code Playgroud)

但是当我删除一行后,即使它不应该被删除,我也会收到这个错误.

这是错误:

删除"DANIEL"."保留",其中ROWID ='AAAFCvAABAAALHhAAA'和ORA_ROWSCN ='3392006'和("NUMR"为空或"NUMR"不为空)ORA-04091:表DANIEL.RESERVATION正在变异,触发/功能可能看不到它ORA-06512:在"DANIEL.TR_INTERDIT",第4行ORA-04088:执行触发器'DANIEL.TR_INTERDIT'时出错

oracle plsql database-trigger

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

存储过程在从源视图更新表时存在性能问题

Source_View只有近800条记录,但我的程序花了将近3分钟来更新PHONE表.我在每一步都有评论来解释逻辑.任何帮助表示赞赏.

要求:使用视图创建一个每天检查电话号码的流程并相应地进行更新.

1)从表1中获取所有区域keycol SELCT*FROM Table1 WHERE CATEGORY ='T';

2)从table2获取活动销售代表数据并获取其用户ID SELECT USER_ID FROM Table2 WHERE key_colval =''AND JOB_TITLE ='Sales Rep'AND STATUS ='Active';

3)使用该用户id查询source_VIEW SELECT*FROM source_VIEW WHERE USER_ID =''AND key_colval ='';

4)如果我们从上面的步骤中找不到任何内容,那么4.1)SELECT*FROM source_VIEW WHERE key_colval ='';

PROCEDURE main_PHONE_UPD 

IS

   V_USER_ID                      VARCHAR2(10);
BEGIN
    EXECUTE IMMEDIATE 'TRUNCATE TABLE TMP_source_VIEW';

    EXECUTE IMMEDIATE 'INSERT INTO TMP_source_VIEW  SELECT SUBSTR(key_col,6) key_colval,MOBILE,USER_ID FROM  source_VIEW WHERE MOBILE IS NOT NULL'; -- Loading to temp table from source view 
    COMMIT;

   FOR REC IN (SELECT key_colval
                 FROM Table1
                WHERE CATEGORY = 'T' …
Run Code Online (Sandbox Code Playgroud)

oracle performance plsql

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

执行立即执行立即执行的pl/sql

我有一个执行立即的查询字符串.

我怎么能执行立即这个PL/SQL?

query string ='执行立即选择....';

想要这样做: Execute immediate 'query string';

这变成了: Execute immediate 'Execute immediate select ....;';

你知道我怎么能这样做?

oracle plsql dynamic-sql

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

如何将'2016-07-01 01:12:22 PM'转换为'2016-07-01 13:12:22'小时格式?

任何人都可以帮我如何转换2016-07-01 01:12:22 PM2016-07-01 13:12:22PL/SQL?我使用了以下但没有运气.

SELECT TO_TIMESTAMP ('08-FEB-19 06.41.41.000000 PM', 'DD-Mon-RR HH24:MI:SS.FF') 
FROM dual
Run Code Online (Sandbox Code Playgroud)

我期待:08-FEB-19 18.41.41.000000

我收到以下错误:

ORA-01830:日期格式图片在转换整个输入字符串之前结束

sql oracle timestamp type-conversion

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

在不放置所有参数的情况下调用oracle过程

我正在使用看起来像这样的oracle过程

CREATE PROCEDURE spName (
    pCurosr OUT refcursor,
    par2 IN VARCHAR := NULL,
        ....
        ....
    par98 IN VARCHAR := NULL,
    error OUT NUMBER
) AS
BEGIN
    ....
    ....
END
Run Code Online (Sandbox Code Playgroud)

问题是,某些过程使用了太多的参数,这些参数已将NULL设置为默认值。我想知道的是,是否可以执行这样的程序?

exec spName(:refcur, :par5 = 'value', :error);
Run Code Online (Sandbox Code Playgroud)

仅将我需要的供应参数和所有其他参数设置为默认值。

oracle plsql

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