我是 Oracle 新手,正在练习 PL/SQL。我有一个问题,即:如何在 oracle 中将 serveroutput 设置为永久打开。我们有什么方法可以将其永久打开吗?
我已经使用 TOAD 一段时间了,但我的部门要求我评估 PL/SQL Developer 作为可能的更改。
我正在尝试在 PL/SQL 开发人员中运行以下内容。它给出了一个错误说:ORA-00900:无效的 SQL 语句
VARIABLE mycur refcursor;
VARIABLE errorseq NUMBER;
VARIABLE errormsg CHAR;
EXEC rums.rums_sp_tv_project_breakdown2(94090,:mycur);
print mycur;
Run Code Online (Sandbox Code Playgroud)
在 TOAD 中,我可以将它放在 SQL 编辑器中,然后按 F5 键以“作为脚本执行”,输出看起来很好。
关于如何做到这一点的任何想法?我看到 PL/SQL Developer 有一个命令窗口,但我不是 SQLPlus 专家(也许是我的问题),也无法让它在命令窗口中运行。
需要创建一个通用存储过程,它将表名作为输入参数并创建以下格式的 xml 文件。Xml 文件名应该是表名。
<XML>
<TABLENAME></TABLENAME>
<RECORDS>
<RECORD>
<COLNAME>AAA</COLNAME>
<COLNAME>AAA</COLNAME>
<RECORD>
<RECORD>
<COLNAME>AAA</COLNAME>
<COLNAME>AAA</COLNAME>
<RECORD>
<RECORD>
<COLNAME>AAA</COLNAME>
<COLNAME>AAA</COLNAME>
<RECORD>
<RECORD>
<COLNAME>AAA</COLNAME>
<COLNAME>AAA</COLNAME>
<RECORD>
<RECORD>
<COLNAME>AAA</COLNAME>
<COLNAME>AAA</COLNAME>
<RECORD>
</RECORDS>
</XML>
<TABLENAME> = actual table name(case should be same as in database)
<COLNAME> = actual column names from table(case should be same as in database)
Keep other tags as it is. Repeat <RECORD> tag for each row retrieved.
Run Code Online (Sandbox Code Playgroud) 我在开发环境中有这样的表
EMP_ID 名称部门 1 AA 2 B BB 3 C 抄送
我在测试环境中有相同的表,但在 DEPT 列中有空值。无论如何,是否可以根据 EMP_ID 生成更新语句,以便我可以将 DEPT 值从 dev 复制到测试?例如 IDE 应该生成 : update EMPLOYEE set dept='AA' where EMP_ID=1. 我使用 Oracle Sqldeveloper 和 PL/SQL Developer。
sql auto-generate plsqldeveloper oracle-sqldeveloper sql-update
我有一个存储过程mydb.iscustomereligible(someGUID)返回'true'或'false'在一个简单的结果集中.
如果客户不符合条件,则proc会向dbms_output输出一个原因,例如reason code: Invalid Age: 2.
如何改进以下语句以包含dbms_output文本?
select mydb.iscustomereligible('1F2629379C4FA046E050C90A0C5A3000') from dual;
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所提出的(并且令人沮丧失败),我无法让dbms_output.get_line工作
declare
v_Data dbms_output.chararr;
v_NumLines number;
begin
-- enable the buffer first
dbms_output.enable(1000000);
dbms_output.put_line('hi');
select mydb.iscustomereligible('1F2629379C4FA046E050C90A0C5A3000') from dual;
select dbms_output.get_line(???) from dual;
end;
Run Code Online (Sandbox Code Playgroud)
谢谢 :)
我需要测试一个在is块中有几个子过程的存储过程。我已将所有内容复制到测试窗口,但是,将这些子过程放在declare块中似乎不起作用。当我尝试从begin块中调用它们时,我收到一条错误消息,指出它们尚未声明。除了将内容移动is到declare. 我能做什么?
我想在“PL SQL Developer”程序中执行一行而不必选择它。
到目前为止,我需要选择查询行并按 F8 键。
有什么方法不需要为我的查询选择行吗?
SELECT * FROM PRODUCT;
SELECT * FROM ALL_OBJECTS; --execute that line without selecting
Run Code Online (Sandbox Code Playgroud)
我正在使用 PL/SQL DEVELOPER 版本 14
我有一个名字清单。
约翰,山姆,彼得,杰克
我想查询与上面的每个过滤器相同的SQL。每个查询都会给我一个唯一的员工ID,我想用它删除其他一些记录。
select emp_id from employee where emp_name like '%john%';
Run Code Online (Sandbox Code Playgroud)
假设第一个查询的ID为1001。因此删除查询如下。
delete from account_details where emp_id = 1001;
delete from hr_details where emp_id = 1001;
delete from pay_role_details where emp_id = 1001;
Run Code Online (Sandbox Code Playgroud)
对于员工列表,我必须重复此操作。伪代码如下所示。
var emp_list = ['john', 'jack', 'kate', 'peter', 'sam',...]
for each :employee_name in emp_list
select emp_id as :var_emp_id from employee where emp_name like '%:employee_name%';
delete from account_details where emp_id = :var_emp_id;
delete from hr_details where emp_id = :var_emp_id;
delete from pay_role_details where emp_id = :var_emp_id;
end loop …Run Code Online (Sandbox Code Playgroud) 我想在Oracle PL/SQL中知道,
=可以用于布尔比较,它也可以用于赋值吗?
虽然是:=用于变量初始化,它也可以用于赋值吗?
那么,那么使用2有什么区别?
谢谢!
有没有办法在Oracle PL / SQL中执行包功能?
这是带有函数的示例包,该函数返回参考光标:
create or replace PACKAGE "PKG_PACKAGE1"
AS
TYPE CURS_OUT IS REF CURSOR;
FUNCTION fnc_PACKAGE1(PARAM1 VARCHAR2, PARAM2 INT) RETURN CURS_OUT;
END "PKG_PACKAGE1";
create or replace PACKAGE BODY "PKG_PACKAGE1"
AS
FUNCTION fnc_PACKAGE1(PARAM1 VARCHAR2, PARAM2 INT) RETURN CURS_OUT
AS
RUNCURS CURS_OUT;
BEGIN
OPEN RUNCURS FOR
SELECT 'Data Returned' FROM DUAL;
RETURN RUNCURS;
END;
END "PKG_PACKAGE1";
Run Code Online (Sandbox Code Playgroud)
这是我想使用SQL Developer Tools在PL / SQL中执行的方法:
BEGIN
:returnRes := PKG_PACKAGE1.FNC_PACKAGE1(:PARAM1,:PARAM2);
END;
Run Code Online (Sandbox Code Playgroud)
要么
Declare
returnRes Varchar2(200);
BEGIN
returnRes := PKG_PACKAGE1.FNC_PACKAGE1(:PARAM1,:PARAM2);
END;
Run Code Online (Sandbox Code Playgroud)
当我运行任何一个时,我都会收到错误消息:PLS-00382:表达式类型错误。当我通过向导运行程序包时,它将返回值。
有没有一种特定的方式来执行软件包,或者不可能?
谢谢。
plsqldeveloper ×10
oracle ×7
plsql ×5
sql ×4
oracle11g ×2
colon-equals ×1
exec ×1
ora-00900 ×1
procedure ×1
sql-update ×1
xml ×1