首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误执行(22: 7):ORA-06550

错误执行(22: 7):ORA-06550
EN

Stack Overflow用户
提问于 2015-03-28 23:54:01
回答 4查看 404关注 0票数 0

你好,我是学生,我是甲骨文的新手,我试过一些东西,但是这个程序有问题,我没有找到它在哪里。我希望你能提前帮我谢谢。

error msg :错误执行(23: 7):ORA-06550:第1行,第7列:请-00306:调用“URUNNOGEN”ORA-06550中的参数数目或类型错误:第1行,第7列: PL/SQL:忽略语句

代码语言:javascript
复制
create or replace procedure ariciaykut.URUNNOGEN
(KATA in NVARCHAR2,MARK in NVARCHAR2,URNO out NVARCHAR2)as 
K NVARCHAR2(3);
M NVARCHAR2(3);
U NUMBER;
BEGIN
K:=KATA;
M:=MARK;
U:=0;
    FOR U IN 1..999 LOOP
        IF U BETWEEN '-1'AND'10' THEN
            URNO:=K||'00'||U||M;
        ELSIF U BETWEEN '9'AND'99' THEN
            URNO:=K||'0'||U||M;
        ELSE
            URNO:=K||U||M;
            INSERT INTO ARICIAYKUT.PROGOSTER VALUES(URNO);
        END IF;
    END LOOP;
END;

呼叫线路:

代码语言:javascript
复制
EXEC ARICIAYKUT.URUNNOGEN('ICK','COC');
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-03-29 11:50:43

移除out变量并声明为局部变量

代码语言:javascript
复制
create or replace procedure ariciaykut.URUNNOGEN
(KATA in NVARCHAR2,MARK in NVARCHAR2)as 
K NVARCHAR2(3);
M NVARCHAR2(3);
U NUMBER;
Urno nvarchar2(100);
BEGIN
K:=KATA;
M:=MARK;
U:=0;
FOR U IN 1..999 LOOP
    IF U BETWEEN -1 AND 9 THEN
        URNO:=K||'00'||U||M;
    ELSIF U BETWEEN 9 AND 99 THEN
        URNO:=K||'0'||U||M;
    ELSE
        URNO:=K||U||M;
END IF;
        INSERT INTO ARICIAYKUT.PROGOSTER VALUES(URNO);

END LOOP;
END;
票数 0
EN

Stack Overflow用户

发布于 2015-03-29 00:14:30

你错过了你对程序的论点之一。定义3,但只在EXEC语句上指定2。

票数 1
EN

Stack Overflow用户

发布于 2015-03-29 03:15:59

您正在将U中的数值与字符串('-1', '10'等)进行比较。这很可能最终会做一些你不想做的事情。您还指望数字到字符的默认转换才能按照您的预期行事;您可能会感到惊讶。

此外,您对变量和循环控制值使用了相同的名称(U),这可能会造成一些混淆。(在循环U中,U将引用循环控件值;在循环外部,U将引用变量)。我建议您重新编码您的过程,以便将数字与数字进行比较,并使用TO_CHAR函数将数字转换为字符串,如下所示:

代码语言:javascript
复制
create or replace procedure ariciaykut.URUNNOGEN
    (KATA in NVARCHAR2,MARK in NVARCHAR2,URNO out NVARCHAR2)
as 
    K NVARCHAR2(3);
    M NVARCHAR2(3);
BEGIN
    K:=KATA;
    M:=MARK;

    FOR U IN 1..999 LOOP
        URNO := K || TO_CHAR(U, '009') || M;

        IF U >= 100 THEN
            INSERT INTO ARICIAYKUT.PROGOSTER VALUES(URNO);
        END IF;
    END LOOP;
END URUNNOGEN;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29324019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档