我对PL/SQL非常陌生,我正在使用Oracle SQL Developer编写一个过程,该过程使用序列为一些现有数据生成主键,并写入另一个DB。
所讨论的代码在NDA下。基本上,我有以下几点:
create or replace
PROCEDURE Generate_Data
(
output IN VARCHAR2
)
AS
-- Variables here --
CURSOR myCursor IS
SELECT data1, data2
FROM table;
CREATE SEQUENCE mySequence <-- error on this l
我试图在下面创建触发器,我在执行时得到了错误。请建议哪些地方需要修改。
CREATE
OR REPLACE TRIGGER TEST_SEQ_TRIGGER
BEFORE INSERT
ON PL_SUPPORTING_LINKS
FOR EACH ROW
BEGIN
IF :NEW.ID IS NULL THEN
SELECT TEST_SEQUENCE.nextval
INTO :NEW.ID
FRO
我是PL/SQL和一般存储过程的新手。我正在尝试编写一个存储过程,它将通过CallableStatement从Java程序中执行。该过程接受两个参数,获取最后一条记录的id,对其进行递增,并使用新增加的id插入一条新记录。我在网上找到了一些示例,它们基本上做了相同的事情,但我无法解决这些错误。
CREATE OR REPLACE PROCEDURE insertEmployeeProcedure
(lastname IN VARCHAR, firstname IN VARCHAR) AS
BEGIN
lastEmpId NUMBER := SELECT COUNT(*)
IN
我的Oracle11gDB、APPRUNNER和APPOWNER中有两个模式。所有表都是在APPOWNER中创建的,并授予APPRUNNER。APPRUNNER与APPOWNER中的所有表都有同义词。我可以使用APPRUNNER来选择任何表,但是当我创建一个在表上有select语句的过程时,它会在ORA-00942: table or view does not exist错误的情况下失败。
注意:I可以在PL/SQL的SQL Windows中成功地运行create语句。错误仅发生在SQLPLUS中。但我需要使用SQLPLUS将其传递给过程。
如下所示,结果如下。
-- Owner of th
我有非常简单的pl\sql代码。
在这段代码中,我打印循环的索引,并在每次打印前等待1秒。
我的问题是,当调用dbms_output.put_line过程并打印时,我希望像使用实时日志一样使用此输出-我希望立即看到输出。
在当前代码中-只有在完成后(5秒..),它会一次性打印所有输出...
set serveroutput on
set echo on
begin
for i in 1..5
loop
dba_maint.pkg_utils.sp_sleep(1);
dbms_output.put_line(i);
end loop;
end;
/
我想要创建PL/SQL函数,接收表名和列名以及条件,然后从表中返回一个值,他的名字在参数中被传递。
我创建了这样的函数:
create or replace function get_dynamic
(tbl_name nvarchar2,col_name nvarchar2 ,cond nvarchar2 )
return nvarchar2 is
res nvarchar2(30);
code varchar2(500):='begin select :col_name into :res from :tbl_name where :cond; end;';
b
我在使用身份自动序列时遇到了问题。开始时,一切运行良好,但在开始显示更大的数字之后
ID NAZIV KATEGORIJA OPIS OBAVLJENO
-- --------------- ------------------- ----------------------------- ---------
21 osmi zadatak pl/sql blok kreiranje anonimnog pl/sql blo n
ka
1 pr
我试图在MySQL中执行PL/SQL语句。但是,当我试图创建一个表时,它会显示一个语法错误。我得到以下错误
CREATE TABLE supplier(supid NUMBER(5) PRIMARY KEY, suppname VARCHAR2(15));
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NUMBER(5) PR
我是Oracle PL/SQL编程中的新手,但我试图学习如何在一个事务中进行PL/SQL中的所有查询,并在这些查询中出现问题时正确回滚,下面是我为达到此目的而制定的模式:
create or replace procedure transaction_safe(var in varchar2)
is
begin
SAVEPOINT start_point;
/* a lot of DML queries here....*/
EXCEPTION
WHEN OTHERS THEN
ROLLBACK TO start_point;
所以我从来没有使用过存储过程,也没有太多的DB经验,而且我被分配了一项任务,需要我创建一个包,但我被卡住了。
使用SQL Developer,我尝试用下面的代码创建一个名为JUMPTO的包……
create or replace package JUMPTO is
type t_locations is ref cursor;
procedure procGetLocations(locations out t_locations);
end JUMPTO;
当我运行它时,它会输出这个PL/SQL代码块...
DECLARE
LOCATIONS APPLICATION.JUMP
我创建过程以输出多行和多列。
create or replace PROCEDURE MYPROC(
C1 OUT SYS_REFCURSOR )
AS
BEGIN
OPEN C1 FOR SELECT * FROM A_TABLE;
END MYPROC;
我编译它时没有错误。但我不能说我的程序像平常一样
Exec MYPROC;
我有这个错误。
Error report -
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'MYPROC'
我正在使用PL/SQL Developer。我正试图通过vba获得查询结果到excel。由于查询时间太长,我决定使用查询结果创建表,然后使用vba获取表结果。为了通过excel创建表,我需要使用动态sql创建过程。到目前为止,我就是这样做的(即使这个简单的例子也不起作用):
create or replace procedure d_x IS
str VARCHAR(81) = 'create table as select 1 as x from dual'
BEGIN
EXECUTE IMMEDIATE str;
END;
过程完成,没有错误。但是,当我试图执行它
在SQL*Plus中运行PL/SQL脚本有问题。我可以正常运行SQL命令,但是当我想运行任何PL/SQL代码时,它不会给出任何结果。请参阅下面的代码和输出。
DECLARE
x_salary employee.salary%TYPE;
BEGIN
select salary
into x_salary
from employee
where ssn=&enter_ssn;
--Output the result
DBMS_OUTPUT.PUT_LINE('Salary is ' || x_salary)
我在运行这段代码时遇到了问题。它说触发器是用编译错误创建的,但没有解释错误所在,也没有给出任何输出。下面是我得到的代码和错误。我使用的是Oracle11gSQL,使用的是PL/ R1。
CREATE OR REPLACE TRIGGER checkRecommendedAge
BEFORE INSERT OR UPDATE ON Loan
FOR EACH ROW
DECLARE
borAge number;
ex exception;
BEGIN
SELECT count(*) INTO borAge
FROM Loan
WHERE date
我正在尝试使用oracle应用程序express.So从报表页到表单页检索customer id pk列,每当用户从报表页移动到表单页时,该列都会自动递增。我正在尝试创建一个触发器,该触发器返回具有最后一行的值以及递增+1的数字。然而,我得到了这个错误
Error at line 8: PLS-00103: Encountered the symbol "(" when expecting one of the following:
, from
6. INTO number
7. FROM (SELECT a.cust_id, max(cust_id) over() a