- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Toad 中开发 Oracle PL/SQL 过程时,我遇到如下错误
这些给定的行号和列号似乎与源代码行号几乎没有关系或没有关系。在哪里可以找到可以帮助我识别导致错误的实际源代码行或实际代码的提示或技巧?这在像上面这样的情况下尤其重要(这是 700 多行源代码的结果),其中错误消息没有提供有关实际问题细节的线索。 (顺便说一句,该源代码中的第 101 行是一系列注释行中的第三行,后面是一个空行。)
(请注意,这还不是存储过程;目前正在从源代码开发和执行。不确定这是否会产生影响,因为目前没有我们开发人员有权访问的数据库创建过程。)
示例代码:
SET SERVEROUTPUT ON;
DECLARE
TYPE bendemo_hdr IS RECORD
(
recid CHAR(1)
, client CHAR(30)
, filedesc CHAR(30)
, seqnum CHAR(2)
, crtdate CHAR(20)
, srtdate CHAR(8)
, stpdate CHAR(8)
);
TYPE bendemo_record IS RECORD
(
recid CHAR(1)
, ssn CHAR(9)
, empnum CHAR(15)
, eeflag CHAR(1)
, titlecode CHAR(6)
, fname CHAR(30)
, mname CHAR(30)
, lname CHAR(30)
, namesuffix CHAR(6)
, prefname CHAR(30)
, dob CHAR(8)
, dod CHAR(8)
, dverdte CHAR(8)
, dauddte CHAR(8)
, ddtesrc CHAR(6)
, gender CHAR(1)
, martstat CHAR(6)
, mstateffdt CHAR(8)
, lang CHAR(1)
, citzcde CHAR(6)
, vipflag CHAR(1)
, kyeeflag CHAR(1)
, orghrdte CHAR(8)
, lathrdte CHAR(8)
, adjhrdte CHAR(8)
, jobtitle CHAR(30)
, precntmthd CHAR(6)
, mailpref CHAR(6)
, phnepref CHAR(6)
, emalpref CHAR(6)
, hmaddrefdt CHAR(8)
, hmaddr1 CHAR(60)
, hmaddr2 CHAR(60)
, hmaddr3 CHAR(60)
, hmaddr4 CHAR(60)
, hmaddcity CHAR(60)
, hmaddstate CHAR(60)
, hmaddzip CHAR(10)
, hmaddcnty CHAR(3)
, hmphcnty CHAR(6)
, hmphnbr CHAR(16)
, hmphext CHAR(4)
, mbphcnty CHAR(6)
, mbphnbr CHAR(16)
, faxcnty CHAR(6)
, faxnbr CHAR(16)
, hmemail CHAR(100)
, wkaddrefdt CHAR(8)
, wkaddr1 CHAR(60)
, wkaddr2 CHAR(60)
, wkaddr3 CHAR(60)
, wkaddr4 CHAR(60)
, wkaddcity CHAR(60)
, wkaddstate CHAR(60)
, wkaddzip CHAR(10)
, wkaddcnty CHAR(3)
, wkphcnty CHAR(6)
, wkphnbr CHAR(16)
, wkphext CHAR(4)
, wkemail CHAR(100)
, hiresrc CHAR(30)
, bgnunit CHAR(30)
, qdroflag CHAR(1)
, hiresrcdt CHAR(8)
);
TYPE bendemo_trlr IS RECORD
(
recid CHAR(1)
, client CHAR(30)
, filedesc CHAR(30)
, reccount CHAR(9)
, field1 CHAR(15)
);
demo_hdr bendemo_hdr;
demo_rec bendemo_record;
demo_trlr bendemo_trlr;
i NUMBER;
PROCEDURE dump_hdr_rec IS
BEGIN
DBMS_OUTPUT.put(bendemo_hdr.recid);
DBMS_OUTPUT.put(bendemo_hdr.client);
DBMS_OUTPUT.put(bendemo_hdr.filedesc);
DBMS_OUTPUT.put(bendemo_hdr.seqnum);
DBMS_OUTPUT.put(bendemo_hdr.crtdate);
DBMS_OUTPUT.put(bendemo_hdr.srtdate);
DBMS_OUTPUT.put(bendemo_hdr.stpdate);
DBMS_OUTPUT.put_line('<');
END dump_hdr_rec;
PROCEDURE dump_demo_rec IS
BEGIN
-- IF l_output IS NULL THEN
DBMS_OUTPUT.put(bendemo_record.recid);
DBMS_OUTPUT.put(bendemo_record.ssn);
DBMS_OUTPUT.put(bendemo_record.empnum);
DBMS_OUTPUT.put(bendemo_record.eeflag);
DBMS_OUTPUT.put(bendemo_record.titlecode);
DBMS_OUTPUT.put(bendemo_record.fname);
DBMS_OUTPUT.put(bendemo_record.mname);
DBMS_OUTPUT.put(bendemo_record.lname);
DBMS_OUTPUT.put(bendemo_record.namesuffix);
DBMS_OUTPUT.put(bendemo_record.prefname);
DBMS_OUTPUT.put(bendemo_record.dob);
DBMS_OUTPUT.put(bendemo_record.dod);
DBMS_OUTPUT.put(bendemo_record.dverdte);
DBMS_OUTPUT.put(bendemo_record.dauddte);
DBMS_OUTPUT.put(bendemo_record.ddtesrc);
DBMS_OUTPUT.put(bendemo_record.gender);
DBMS_OUTPUT.put(bendemo_record.martstat);
DBMS_OUTPUT.put(bendemo_record.mstateffdt);
DBMS_OUTPUT.put(bendemo_record.lang);
DBMS_OUTPUT.put(bendemo_record.citzcde);
DBMS_OUTPUT.put(bendemo_record.vipflag);
DBMS_OUTPUT.put(bendemo_record.kyeeflag);
DBMS_OUTPUT.put(bendemo_record.orghrdte);
DBMS_OUTPUT.put(bendemo_record.lathrdte);
DBMS_OUTPUT.put(bendemo_record.adjhrdte);
DBMS_OUTPUT.put(bendemo_record.jobtitle);
DBMS_OUTPUT.put(bendemo_record.precntmthd);
DBMS_OUTPUT.put(bendemo_record.mailpref);
DBMS_OUTPUT.put(bendemo_record.phnepref);
DBMS_OUTPUT.put(bendemo_record.emalpref);
DBMS_OUTPUT.put(bendemo_record.hmaddrefdt);
DBMS_OUTPUT.put(bendemo_record.hmaddr1);
DBMS_OUTPUT.put(bendemo_record.hmaddr2);
DBMS_OUTPUT.put(bendemo_record.hmaddr3);
DBMS_OUTPUT.put(bendemo_record.hmaddr4);
DBMS_OUTPUT.put(bendemo_record.hmaddcity);
DBMS_OUTPUT.put(bendemo_record.hmaddstate);
DBMS_OUTPUT.put(bendemo_record.hmaddzip);
DBMS_OUTPUT.put(bendemo_record.hmaddcnty);
DBMS_OUTPUT.put(bendemo_record.hmphcnty);
DBMS_OUTPUT.put(bendemo_record.hmphnbr);
DBMS_OUTPUT.put(bendemo_record.hmphext);
DBMS_OUTPUT.put(bendemo_record.mbphcnty);
DBMS_OUTPUT.put(bendemo_record.mbphnbr);
DBMS_OUTPUT.put(bendemo_record.faxcnty);
DBMS_OUTPUT.put(bendemo_record.faxnbr);
DBMS_OUTPUT.put(bendemo_record.hmemail);
DBMS_OUTPUT.put(bendemo_record.wkaddrefdt);
DBMS_OUTPUT.put(bendemo_record.wkaddr1);
DBMS_OUTPUT.put(bendemo_record.wkaddr2);
DBMS_OUTPUT.put(bendemo_record.wkaddr3);
DBMS_OUTPUT.put(bendemo_record.wkaddr4);
DBMS_OUTPUT.put(bendemo_record.wkaddcity);
DBMS_OUTPUT.put(bendemo_record.wkaddstate);
DBMS_OUTPUT.put(bendemo_record.wkaddzip);
DBMS_OUTPUT.put(bendemo_record.wkaddcnty);
DBMS_OUTPUT.put(bendemo_record.wkphcnty);
DBMS_OUTPUT.put(bendemo_record.wkphnbr);
DBMS_OUTPUT.put(bendemo_record.wkphext);
DBMS_OUTPUT.put(bendemo_record.wkemail);
DBMS_OUTPUT.put(bendemo_record.hiresrc);
DBMS_OUTPUT.put(bendemo_record.bgnunit);
DBMS_OUTPUT.put(bendemo_record.qdroflag);
DBMS_OUTPUT.put(bendemo_record.hiresrcdt);
DBMS_OUTPUT.put_line('<');
END dump_demo_rec;
PROCEDURE dump_hdr_trlr IS
BEGIN
DBMS_OUTPUT.put(bendemo_trlr.recid);
DBMS_OUTPUT.put(bendemo_trlr.client);
DBMS_OUTPUT.put(bendemo_trlr.filedesc);
DBMS_OUTPUT.put(bendemo_trlr.reccount);
DBMS_OUTPUT.put(bendemo_trlr.field1);
DBMS_OUTPUT.put_line('<');
END dump_hdr_trlr;
BEGIN
demo_bendemo_hdr.recid := 'x';
demo_bendemo_hdr.client := 'Client';
demo_bendemo_hdr.filedesc := 'Descr';
demo_bendemo_hdr.seqnum := 'a';
demo_bendemo_hdr.crtdate := 'Created';
demo_bendemo_hdr.srtdate := 'Sorted';
demo_bendemo_hdr.stpdate := 'stop';
dump_demo_hdr(l_output, demo_hdr);
END;
最佳答案
如果没有看到您正在运行的代码类型的示例,很难确定这个答案是否相关,但消息中指定的行号与正在编译的 PL/SQL 的整体 block 相关,并且忽略任何该行之前的空白行或注释。例如,如果您的脚本显示(仅为了清楚起见添加了行号):
1
2 -- test script
3
4
5 begin
6
7 rubbish;
8
9 end;
然后当你尝试运行它时,你会收到错误:
ORA-06550: line 3, column 3:
PLS-00201: identifier 'RUBBISH' must be declared ...
它说的是第 3 行而不是第 7 行,因为“垃圾”;是正在编译的 PL/SQL 的第三行。上面的空行和注释不算数。不过, block 内的空行和注释确实很重要。
因此,将我的规则应用于您发布的代码示例,我们可以忽略 DECLARE 上面的 2 行,因此“第 97 行”是第 99 行:
DBMS_OUTPUT.put(bendemo_hdr.recid);
但是bendemo_hdr是一个TYPE而不是一个变量,所以它在这个语句中没有意义,因此出现错误。它类似于写作:
DBMS_OUTPUT.put(CHAR(1)); --!!!
您的意思可能是:
DBMS_OUTPUT.put(demo_hdr.recid);
关于oracle - ORA-06550 消息中的实际源行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10914682/
猫f1.txt阿曼维沙尔阿杰贾伊维杰拉胡尔曼尼什肖比特批评塔夫林现在输出应该符合上面给定的条件 最佳答案 您可以在文件读取循环中设置一个计数器并打印它, 计数=0 读取行时做 让我们数一数++ if
我正在尝试查找文件 1 和文件 2 中的共同行。如果公共(public)行存在,我想写入文件 2 中的行,否则打印文件 1 中的非公共(public)行。fin1 和 fin2 是这里的文件句柄。它读
我有这个 SQL 脚本: CREATE TABLE `table_1` ( `IDTable_1` int(11) NOT NULL, PRIMARY KEY (`IDTable_1`) );
我有 512 行要插入到数据库中。我想知道提交多个插入内容是否比提交一个大插入内容有任何优势。例如 1x 512 行插入 -- INSERT INTO mydb.mytable (id, phonen
如何从用户中选择user_id,SUB(row, row - 1),其中user_id=@userid我的表用户,id 为 1、3、4、10、11、23...(不是++) --id---------u
我曾尝试四处寻找解决此问题的最佳方法,但我找不到此类问题的任何先前示例。 我正在构建一个基于超本地化的互联网购物中心,该区域分为大约 3000 个区域。每个区域包含大约 300 个项目。它们是相似的项
preg_match('|phpVersion = (.*)\n|',$wampConfFileContents,$result); $phpVersion = str_replace('"','',
我正在尝试创建一个正则表达式,使用“搜索并替换全部”删除 200 个 txt 文件的第一行和最后 10 行 我尝试 (\s*^(\h*\S.*)){10} 删除包含的前 10 行空白,但效果不佳。 最
下面的代码从数据库中获取我需要的信息,但没有打印出所有信息。首先,我知道它从表中获取了所有正确的信息,因为我已经在 sql Developer 中尝试过查询。 public static void m
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我试图在两个表中插入记录,但出现异常。您能帮我解决这个问题吗? 首先我尝试了下面的代码。 await _testRepository.InsertAsync(test); await _xyzRepo
这个基本的 bootstrap CSS 显示 1 行 4 列: Text Text Text
如果我想从表中检索前 10 行,我将使用以下代码: SELECT * FROM Persons LIMIT 10 我想知道的是如何检索前 10 个结果之后的 10 个结果。 如果我在下面执行这段代码,
今天我开始使用 JexcelApi 并遇到了这个:当您尝试从特定位置获取元素时,不是像您通常期望的那样使用sheet.getCell(row,col),而是使用sheet.getCell(col,ro
我正在尝试在我的网站上开发一个用户个人资料系统,其中包含用户之前发布的 3 个帖子。我可以让它选择前 3 条记录,但它只会显示其中一条。我是不是因为凌晨 2 点就想编码而变得愚蠢? query($q)
我在互联网上寻找答案,但找不到任何答案。 (我可能问错了?)我有一个看起来像这样的表: 我一直在使用查询: SELECT title, date, SUM(money) FROM payments W
我有以下查询,我想从数据库中获取 100 个项目,但 host_id 多次出现在 urls 表中,我想每个 host_id 从该表中最多获取 10 个唯一行。 select * from urls j
我的数据库表中有超过 500 行具有特定日期。 查询特定日期的行。 select * from msgtable where cdate='18/07/2012' 这将返回 500 行。 如何逐行查询
我想使用 sed 从某一行开始打印 n 行、跳过 n 行、打印 n 行等,直到文本文件结束。例如在第 4 行声明,打印 5-9,跳过 10-14,打印 15-19 等 来自文件 1 2 3 4 5 6
我目前正在执行验证过程来检查用户的旧密码,但问题是我无法理解为什么我的查询返回零行,而预期它有 1 行。另一件事是,即使我不将密码文本转换为 md5,哈希密码仍然得到正确的答案,但我不知道为什么会发生
我是一名优秀的程序员,十分优秀!