标签: plsql

如何在文件系统上创建目录?

如何在PL/SQL中在OS上创建物理目录?我查看了CREATE OR REPLACE DIRECTORY命令但是没有这样做.两者UTL_FILE似乎都没有能力.

oracle directory plsql oracle10g

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

直接在user_constraint表中重命名Oracle约束的任何问题?

使用Oracle 10g,我需要重命名一堆FK约束,这些约束都以LITE结尾以包含FK前缀.

我的想法是(我确保所有名称都足够短以容纳前缀):

DECLARE
  v_name VARCHAR2(30 BYTE);
  v_new_name VARCHAR2(30 BYTE);
  CURSOR c1 is select CONSTRAINT name from user_constraints where constraint_type = 'R' and constraint_name like '%_LITE';
BEGIN
   OPEN c1;
   LOOP
      FETCH c1 into v_name;
      EXIT when c1%NOTFOUND;
      v_new_name:= 'FK_' || v_name;
      update user_constraints SET constraint_name = v_new_name where constraint_name = v_name;
   END LOOP;
   close c1;
END;
Run Code Online (Sandbox Code Playgroud)

任何原因导致不安全,我应该创建alter table语句?

oracle plsql oracle10g

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

PL/SQL ...如果在select中?

在PL/SQL方面我很新,我必须修改其他人的存储过程.

是否可以在select中间添加if语句?我尝试打开一个游标并从不同的表中选择一堆东西(不要问我为什么他们没有使用连接)并返回光标.我正在尝试做的事情是,有两列具有相似的数据,可以永远不会同时填充.因此,如果一个为null,则另一个应该有一个值,并且游标需要来自任何填充的值.那么...如果声明里面的选择?

我不会发布实际的代码,因为它会使你的眼球流血,但它看起来像......

open rc for
select l.data1 as ld1, l.data2 as ld2, b.data1 as bd1, 
       b.data2 as bd2, c.data1 as as c_d1, c.data2 as cd2
from tablel l, tableb b, tablec c
where blahblahblah
and c.data1 = [b.data3 if b.data4 is null, else b.data4]?
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我似乎无法获得语法.

sql database oracle plsql

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

如何用pl/sql循环接受用户输入?

我希望能够根据用户输入在表中插入可变数量的行?例如.

Please enter value, enter "done" when no more values: value 1
Please enter value, enter "done" when no more values: value 2
Please enter value, enter "done" when no more values: done

2 Rows inserted successfully.
Run Code Online (Sandbox Code Playgroud)

我不确定如何临时存储行,我不知道如何多次询问用户插入数据.pl/sql有数组吗?

谢谢

oracle plsql sqlplus oracle10g

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

Oracle中的简单查询

在Oracle中执行以下操作的查询是什么?

  1. 获取所有存在的视图的名称?(类似于select*from view,但我希望得到的视图不是表格)
  2. 查看特定视图的来源.

sql oracle plsql

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

使用Oracle PL/SQL表时缓慢更新

我们使用PL/SQL表(名为pTable)来收集许多要更新的ID.

但是,声明

UPDATE aTable
SET aColumn = 1
WHERE id IN (SELECT COLUMN_VALUE
                     FROM   TABLE (pTable));
Run Code Online (Sandbox Code Playgroud)

需要很长时间才能执行.

似乎优化器提出了一个非常糟糕的执行计划,而不是使用在id(作为主键)上定义的索引,它决定在aTable上使用全表扫描.pTable通常包含很少的值(在大多数情况下只有一个).

我们可以做些什么来加快速度?我们提出的最好的是处理低pTable.Count(1和2)作为特殊情况,但这当然不是很优雅.

感谢所有伟大的建议.我在http://smartercoding.blogspot.com/2010/01/performance-issues-using-plsql-tables.html的博客中写了这个问题.

oracle plsql

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

如何在Oracle中查看错误?

尝试在Oracle中执行包含两个输入参数的存储过程时,我收到以下错误:

ORA-06550:第1行第7列:
PLS -00306:调用
'P_GET_NEXT_AVAILABLE_RUN'ORA
-06550 时参数的数量或类型错误:第1行第7行:
PL/SQL:语句被忽略

两个输入参数都需要非空值.我无法单步执行代码,否则我将能够看到哪个值为null - 所以 - 在Oracle中有哪种方法可以看到存储过程生成的错误 - 所以我可以确定哪个参数得到了空值?

sql database oracle plsql ora-06550

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

Oracle刷新物化视图 - 编译错误

我试图在物化视图上执行刷新,但我无法编译脚本.

CREATE OR REPLACE PROCEDURE REFRESH_MV AS
BEGIN
    exec DBMS_MVIEW.REFRESH('my_mat_view_mv','C');
END REFRESH_MV;
Run Code Online (Sandbox Code Playgroud)

我收到消息:

ORA-06550:第3行第9列:PLS-00103:遇到以下其中一项时遇到符号"DBMS_MVIEW":

:=.(@%;立即用符号":="代替"DBMS_MVIEW"继续.

难道我做错了什么 ?需要进口什么?

更新

CREATE OR REPLACE PROCEDURE REFRESH_MV AS
BEGIN
    EXECUTE  DBMS_MVIEW.REFRESH('my_mat_view_mv','C');
END REFRESH_MV;
Run Code Online (Sandbox Code Playgroud)

(S1917)期待:(; @
IMMEDIATE

CREATE OR REPLACE PROCEDURE REFRESH_MV AS
BEGIN
    EXECUTE IMMEDIATE DBMS_MVIEW.REFRESH('my_mat_view_mv','C');
END REFRESH_MV;

Warning: compiled but with compilation errors
Run Code Online (Sandbox Code Playgroud)

这是一个Oracle 10g XE,希望没问题.

提前致谢 !

oracle plsql materialized-views ora-06550

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

将%rowtype与连接和重复列一起使用

给定(忽略缺少主键,外键等 - 这不是表设计,只是一个例子):

Order:
----------
ID NUMBER;
VENDOR NUMBER;
PART NUMBER;

Parts:
------------
ID NUMBER;
VENDOR NUMBER;
DESCRIPTION VARCHAR2(1000 CHAR);


cursor c1 is select * from order o left join parts p on o.part = p.id;
c_row c1%rowtype;
Run Code Online (Sandbox Code Playgroud)

如何区分将在联接中的两个VENDOR列?

我不认为我可以做c_row.value,因为那会是模棱两可的,我不认为像c_row.p.vendor这样的东西有效.

如何引用两个值列的特定实例?

oracle plsql join oracle10g

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

PL\SQL DML指令

是提交在PL\SQL DML一个指令?

sql oracle plsql dml

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