什么是:代表在查询?
INSERT INTO MyTable (ID) VALUES (:myId)
Run Code Online (Sandbox Code Playgroud)
它如何获取所需的值?
编辑:那个标志叫什么?我想搜索谷歌,但名称是:什么?
我有一个从shell脚本中调用的SQL脚本,需要很长时间才能运行.它目前包含dbms_output.put_line各个方面的陈述.这些打印语句的输出显示在日志文件中,但仅在脚本完成后才显示.
有没有办法确保在脚本运行时输出显示在日志文件中?
我有一个关于绑定变量可以在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) 我花了几个小时在网上搜索这个问题的答案......
这是我现在拥有的:
select *
from order_header oh
where tran_date = sysdate-1
Run Code Online (Sandbox Code Playgroud)
提前致谢.
如何在一个具有多个列的选择中执行并将每个列放在变量中?
像这样的东西:
--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) 昨天我正在编写一些任务,让我感到震惊的是,当我使用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)
但是我不知道它是否被接受的方式,或者如果有更好的检查方法,如果有人可以与我分享他们的智慧,我真的会感到高兴:)
干杯.
假设我有一个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)
为了捕获唯一约束错误,是否可以替换省略号?
我正在努力将存储过程从SQL服务器转换为Oracle.此存储过程提供直接结果集.我的意思是,如果您在例如Management Studio中调用存储过程,则直接获取结果集.
通过转换为Oracle,我可以解决Oracle中不显示结果集的问题
我在互联网上搜索并看到存储过程应该产生一个REF CURSOR,但我仍然在解决问题,编写一小段代码来获得结果集.
伪代码:
调用存储过程并获取游标使用该游标执行某些操作,以便显示我的结果集
有人有想法吗?
如何将逗号分隔的字符串转换为数组?
我有输入' 1,2,3',我需要将其转换为数组.
在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 ×10
plsql ×10
sql ×6
database ×1
dbms-output ×1
oracle11g ×1
select ×1
select-into ×1
tokenize ×1