标签: plsql

是否可以从PL/SQL块输出SELECT语句?

我怎样才能获得PL/SQL块来输出SELECT语句的结果,就像我做一个普通的一样SELECT

例如,如何做一个SELECT像:

SELECT foo, bar FROM foobar;
Run Code Online (Sandbox Code Playgroud)

提示:

BEGIN
SELECT foo, bar FROM foobar;
END;
Run Code Online (Sandbox Code Playgroud)

不起作用.

sql oracle plsql oracle10g oracle-apex

59
推荐指数
5
解决办法
15万
查看次数

如何在SELECT语句中使用BOOLEAN类型

我在参数中有一个带有BOOLEAN的PL/SQL函数:

function get_something(name in varchar2, ignore_notfound in boolean);
Run Code Online (Sandbox Code Playgroud)

此功能是第三方工具的一部分,我无法改变这一点.

我想在SELECT语句中使用这个函数,如下所示:

 select get_something('NAME', TRUE) from dual;
Run Code Online (Sandbox Code Playgroud)

这不起作用,我得到这个例外:

ORA-00904:"TRUE":标识符无效

据我了解,关键字TRUE无法识别.

我怎样才能做到这一点?

sql oracle plsql oracle10g ora-00904

55
推荐指数
4
解决办法
23万
查看次数

如何使用低权限的PL-SQL在Oracle中获取列数据类型?

我对Oracle数据库中的几个表具有"只读"访问权限.我需要获取一些列的架构信息.我想使用类似于MS SQL的东西sp_help.

我在这个查询中看到了我感兴趣的表:

SELECT * FROM ALL_TABLES
Run Code Online (Sandbox Code Playgroud)

当我运行此查询时,Oracle告诉我"在架构中找不到表",是的,参数是正确的.

SELECT 
DBMS_METADATA.GET_DDL('TABLE', 'ITEM_COMMIT_AGG', 'INTAMPS') AS DDL
FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

在使用我的Oracle通用翻译器9000后,我推测这不起作用,因为我没有足够的权限.鉴于我的约束,我如何获得表上的列的数据类型和数据长度?我有PL-SQL语句的读访问权限?

oracle privileges ddl plsql

55
推荐指数
7
解决办法
21万
查看次数

如何在将列添加到PL/SQL中的现有表之前检查列是否存在?

在为oracle db的表添加列之前,如何添加简单检查?我已经包含了我用来添加列的SQL.

ALTER TABLE db.tablename 
  ADD columnname NVARCHAR2(30);
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql

54
推荐指数
3
解决办法
12万
查看次数

BEGIN - END阻止PL/SQL中的原子事务

这些信息应该很容易找到,但我没有运气.

当我BEGIN - END在PL/SQL中有一个块时,它是否表现为原子事务,它将尝试提交命中END块,如果出现任何问题,则回滚更改?

如果没有,我如何确保BEGIN-END块内的代码表现得像一个原子事务,该块如何"默认"行为?

编辑:我想从存储过程运行,我正在使用隐式块.

oracle plsql

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

PL/SQL Oracle函数或过程创建的IS与AS关键字

我一直试图找出创建Oracle函数或过程时PL/SQL中的ISAS关键字之间的区别.

我搜索过,但无法找到任何相关信息.有谁知道这个区别?

sql oracle plsql

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

获取Oracle数据库中所有函数和过程的列表

我正在比较三个Oracle模式.

我想获得每个数据库中使用的所有函数和过程的列表.这可以通过查询吗?(最好包括一个关于它们是否编译的标志)

理想情况下,使用一个标志来指示函数/过程是否在每个模式中都是很好的.但即使只是第一位也比手动检查每个模式更好.

oracle plsql oracle9i

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

如何执行oracle存储过程?

我正在使用oracle 10g快递版.它对数据库开发人员来说非常好用.但我面临执行存储过程的一些问题.

程序:

create or replace procedure temp_proc is
begin
  DBMS_OUTPUT.PUT_LINE('Test');
end
Run Code Online (Sandbox Code Playgroud)

它创建成功.但是当我执行时:

execute temp_proc;

它显示ORA-00900:无效的SQL语句

所以需要帮助

oracle plsql oracle10g ora-00900

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

Oracle:如果行不存在,如何INSERT

在PL/SQL(oracle)中,如果行不存在,最简单的方法是什么?

我想要的东西:

IF NOT EXISTS (SELECT * FROM table WHERE name = 'jonny') THEN
  INSERT INTO table VALUES ("jonny", null);
END IF;
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

注意:此表有2个字段,例如姓名年龄.但只有名字是PK.

oracle plsql

49
推荐指数
5
解决办法
11万
查看次数

Oracle中的函数与过程

任何人都能解释一下Oracle中函数和过程之间的主要区别是什么?如果我能用功能做所有事情,为什么我必须使用程序?

  1. 如果我不能在sql语句中调用过程,那么,我会写一个函数来做同样的工作.
  2. 程序不返回值,好吧,我会在任何dml操作后只返回sql%rowcount或1(成功),0(异常)
  3. 程序和函数都可以通过OUT/IN OUT参数将变量传递给调用环境

我听说主要区别在于性能,"程序比功能更快".但没有任何细节.

提前致谢.

oracle plsql stored-procedures stored-functions oracle11g

49
推荐指数
3
解决办法
8万
查看次数