Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 提示未获取输入并获取编译器错误_Sql - Fatal编程技术网

Sql 提示未获取输入并获取编译器错误

Sql 提示未获取输入并获取编译器错误,sql,Sql,我试图使用Oracle Developer在PL/SQL中编写一个过程,该过程从提示符获取输入,如果没有输入,则使用异常处理程序输出。我的提示窗口显示“请输入p_first_name的值”,而不是“…”中的值。在提示中输入数据后,出现以下错误: 代码 输入第一个、最后一个和标题后,我希望打印: 如果任何值为NULL,我希望打印异常处理程序 到目前为止,我只得到以下错误: 试试这个 CREATE OR REPLACE PROCEDURE print_name (first_name IN

我试图使用Oracle Developer在PL/SQL中编写一个过程,该过程从提示符获取输入,如果没有输入,则使用异常处理程序输出。我的提示窗口显示“请输入p_first_name的值”,而不是“…”中的值。在提示中输入数据后,出现以下错误:

代码 输入第一个、最后一个和标题后,我希望打印:

如果任何值为NULL,我希望打印异常处理程序

到目前为止,我只得到以下错误:

试试这个

    CREATE OR REPLACE PROCEDURE print_name (first_name IN varchar, last_name 
            varchar, title varchar) IS






first_null EXCEPTION;
last_null EXCEPTION;
title_null EXCEPTION;

BEGIN




IF first_name IS NULL THEN
raise first_null;
END IF;

IF last_name IS NULL THEN
raise last_null;
END IF;

IF title IS NULL THEN
raise title_null;
END IF;

DBMS_OUTPUT.PUT_LINE(last_name || ',' || first_name || ' ' || title);

EXCEPTION
WHEN first_null THEN
DBMS_OUTPUT.PUT_LINE('You must enter a first name.');

WHEN last_null THEN
DBMS_OUTPUT.PUT_LINE('You must enter a last name.');

WHEN title_null THEN
DBMS_OUTPUT.PUT_LINE('You must enter a title.');

END;
/     
然后,在执行过程时,使用prompt,因为prompt在外部而不是在存储过程中工作

SET SERVEROUTPUT ON


CREATE PROCEDURE print_name (first_name IN varchar, last_name varchar, 
title varchar) IS

ACCEPT p_first_name PROMPT 'Please enter a first name:'

ACCEPT p_last_name PROMPT 'Please enter a second name:'

ACCEPT p_title PROMPT 'Please enter a second name:'

DECLARE

first_name varchar  :=&p_first_name;
last_name varchar   :=&p_last_name;
title varchar       :=&p_title;


first_null EXCEPTION;
last_null EXCEPTION;
title_null EXCEPTION;

BEGIN



IF first_name IS NULL THEN
raise first_null;
END IF;

IF last_name IS NULL THEN
raise last_null;
END IF;

IF title IS NULL THEN
raise title_null;
END IF;

DBMS_OUTPUT.PUT_LINE(last_name || ',' || first_name || ' ' || title);

EXCEPTION
WHEN first_null THEN
DBMS_OUTPUT.PUT_LINE('You must enter a first name.');

WHEN last_null THEN
DBMS_OUTPUT.PUT_LINE('You must enter a last name.');

WHEN title_null THEN
DBMS_OUTPUT.PUT_LINE('You must enter a title.');

END;
/
Doe, Jane Ms.
Error(6,21): PLS-00103: Encountered the symbol "PROMPT" when expecting 
one of the following:     := . ( @ % ; not null range default character
    CREATE OR REPLACE PROCEDURE print_name (first_name IN varchar, last_name 
            varchar, title varchar) IS






first_null EXCEPTION;
last_null EXCEPTION;
title_null EXCEPTION;

BEGIN




IF first_name IS NULL THEN
raise first_null;
END IF;

IF last_name IS NULL THEN
raise last_null;
END IF;

IF title IS NULL THEN
raise title_null;
END IF;

DBMS_OUTPUT.PUT_LINE(last_name || ',' || first_name || ' ' || title);

EXCEPTION
WHEN first_null THEN
DBMS_OUTPUT.PUT_LINE('You must enter a first name.');

WHEN last_null THEN
DBMS_OUTPUT.PUT_LINE('You must enter a last name.');

WHEN title_null THEN
DBMS_OUTPUT.PUT_LINE('You must enter a title.');

END;
/     
 ACCEPT p_first_name  char PROMPT 'Please enter a first name:';
 ACCEPT p_last_name char PROMPT 'Please enter a second name:';

       ACCEPT p_title_name char  PROMPT 'Please enter a second name:';


 exec print_name('&p_first_name','&p_last_name','&p_title_name');