标签: plsql

冒号在SQL查询中签名":"做什么?

什么是:代表在查询?

INSERT INTO MyTable (ID) VALUES (:myId)
Run Code Online (Sandbox Code Playgroud)

它如何获取所需的值?

编辑:那个标志叫什么?我想搜索谷歌,但名称是:什么?

sql oracle plsql bind-variables

44
推荐指数
6
解决办法
7万
查看次数

有没有办法从Oracle中的PL/SQL刷新输出?

我有一个从shell脚本中调用的SQL脚本,需要很长时间才能运行.它目前包含dbms_output.put_line各个方面的陈述.这些打印语句的输出显示在日志文件中,但仅在脚本完成后才显示.

有没有办法确保在脚本运行时输出显示在日志文件中?

sql oracle plsql dbms-output

43
推荐指数
3
解决办法
7万
查看次数

在PL/SQL中使用绑定变量和动态SELECT INTO子句

我有一个关于绑定变量可以在PL/SQL中的动态SQL语句中使用的问题.

例如,我知道这是有效的:

CREATE OR REPLACE FUNCTION get_num_of_employees (p_loc VARCHAR2, p_job VARCHAR2) 
RETURN NUMBER
IS
  v_query_str VARCHAR2(1000);
  v_num_of_employees NUMBER;
BEGIN
  v_query_str := 'SELECT COUNT(*) FROM emp_' 
                 || p_loc
                 || ' WHERE job = :bind_job';                           
  EXECUTE IMMEDIATE v_query_str
    INTO v_num_of_employees
    USING p_job;
  RETURN v_num_of_employees;
END;
/
Run Code Online (Sandbox Code Playgroud)

我想知道你是否可以在这样的select语句中使用绑定变量

CREATE OR REPLACE FUNCTION get_num_of_employees (p_loc VARCHAR2, p_job VARCHAR2) 
RETURN NUMBER
IS
  v_query_str VARCHAR2(1000);
  v_num_of_employees NUMBER;
BEGIN
  v_query_str := 'SELECT COUNT(*) INTO :into_bind FROM emp_' 
                 || p_loc
                 || ' WHERE job = :bind_job';                           
  EXECUTE IMMEDIATE …
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql oracle11g execute-immediate

42
推荐指数
3
解决办法
23万
查看次数

Oracle:我如何才能从昨天开始选择记录?

我花了几个小时在网上搜索这个问题的答案......

这是我现在拥有的:

select  *
from    order_header oh
where   tran_date = sysdate-1
Run Code Online (Sandbox Code Playgroud)

提前致谢.

sql database oracle plsql

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

选择多个列到多个变量

如何在一个具有多个列的选择中执行并将每个列放在变量中?

像这样的东西:

--code here
V_DATE1 T1.DATE1%TYPE;
V_DATE2 T1.DATE2%TYPE;
V_DATE3 T1.DATE3%TYPE;

SELECT T1.DATE1 INTO V_DATE1, T1.DATE2 INTO V_DATE2, T1.DATE3 INTO V_DATE3
FROM T1
WHERE ID='X';

--code here
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql select-into

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

检查表[pl/sql block]中是否存在行的正确方法

昨天我正在编写一些任务,让我感到震惊的是,当我使用pl/sql时,我并不知道检查表中是否存在行的正确和接受方式.

例如,让我们使用表格

PERSON(ID, Name); 
Run Code Online (Sandbox Code Playgroud)

显然我做不到(除非有一些秘密方法)类似于:

BEGIN 
  IF EXISTS SELECT id FROM person WHERE ID = 10; 
    -- do things when exists
  ELSE
    -- do things when doesn't exist
  END IF;
END;
Run Code Online (Sandbox Code Playgroud)

所以我解决它的标准方法是:

DECLARE
  tmp NUMBER;
BEGIN 
  SELECT id INTO tmp FROM person WHERE id = 10; 
  --do things when record exists
EXCEPTION
  WHEN no_data_found THEN
  --do things when record doesn't exist
END; 
Run Code Online (Sandbox Code Playgroud)

但是我不知道它是否被接受的方式,或者如果有更好的检查方法,如果有人可以与我分享他们的智慧,我真的会感到高兴:)

干杯.

sql oracle select plsql

39
推荐指数
3
解决办法
10万
查看次数

如何在PL/SQL块中捕获唯一约束错误?

假设我有一个Oracle PL/SQL块,它将记录插入表中,需要从唯一约束错误中恢复,如下所示:

begin
    insert into some_table ('some', 'values');
exception
    when ...
        update some_table set value = 'values' where key = 'some';
end;
Run Code Online (Sandbox Code Playgroud)

为了捕获唯一约束错误,是否可以替换省略号?

oracle plsql

38
推荐指数
3
解决办法
11万
查看次数

从oracle存储过程获取结果集

我正在努力将存储过程从SQL服务器转换为Oracle.此存储过程提供直接结果集.我的意思是,如果您在例如Management Studio中调用存储过程,则直接获取结果集.

通过转换为Oracle,我可以解决Oracle中不显示结果集的问题

我在互联网上搜索并看到存储过程应该产生一个REF CURSOR,但我仍然在解决问题,编写一小段代码来获得结果集.

伪代码:

调用存储过程并获取游标使用该游标执行某些操作,以便显示我的结果集

有人有想法吗?

oracle plsql stored-procedures

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

在PL/SQL中将逗号分隔的字符串转换为数组

如何将逗号分隔的字符串转换为数组?

我有输入' 1,2,3',我需要将其转换为数组.

oracle plsql tokenize

37
推荐指数
4
解决办法
17万
查看次数

声明变量并从Oracle中的SELECT查询设置其值

在SQL Server中我们可以使用:

DECLARE @variable INT;
SELECT @variable= mycolumn from myTable;
Run Code Online (Sandbox Code Playgroud)

我怎样才能在Oracle中做同样的事情?我目前正在尝试以下方法:

DECLARE COMPID VARCHAR2(20);
SELECT companyid INTO COMPID from app where appid='90' and rownum=1;
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用

在此输入图像描述

oracle plsql

37
推荐指数
3
解决办法
26万
查看次数