gpt4 book ai didi

sql - PL/SQL : how do I prompt user input in a procedure?

转载 作者:行者123 更新时间:2023-12-04 21:25:02 26 4
gpt4 key购买 nike

这是关于我正在做的一个大型项目的一小部分的问题。我尝试了以下操作,但我只收到下面的两个错误:

SET SERVEROUTPUT ON

CREATE OR REPLACE PROCEDURE HELLO AS
DECLARE
variable1 NUMBER(1);
variable2 CHAR(1);

BEGIN
DBMS_OUTPUT.PUT_LINE('Hello World');
variable1 := &please_enter_1_or_0;
variable2 := &please_enter_y_or_n;
END;
/

Error(2,5): PLS-00103: Encountered the symbol "DECLARE" when expectingone of the following: begin function pragma procedure subtype type currentcursor delete exists prior external language The symbol "begin" wassubstituted for "DECLARE" to continue.

Error(10,8): PLS-00103: Encountered the symbol "end-of-file" whenexpecting one of the following: ( begin case declare end exceptionexit for goto if loop mod null pragma raise return select updatewhile with
<< continue close current delete fetch lock
insert open rollback savepoint set sql execute commit forall mergepipe purge


我们获得了如何标记我们的代码的标记方案,对于本节,相关标准是:
“脚本是否使用了程序?”和
“脚本是否提示正确/错误和团队/个人并正确处理提供的数据?”。
项目简介引用“开发一个提示正确/错误(使用 &)的过程,然后更新表”(其中表是表的名称)。
变量的目的是更新现有的记录属性。即如果用户选择 1 和 n 然后将记录中的空值更新为 2。如果它是 1 并且 y 则更新为 1,如果 0 和 y/n 则更新为 0。

最佳答案

PL/SQL 是一种用于编写自主程序的语言。它不是为用户交互而设计的。输入值作为参数传递。
所以你的程序应该是这样的

CREATE OR REPLACE PROCEDURE hello
( p1 in number
, p2 in varchar2 )
AS
l_salutation varchar2(20) := 'Hello World';
BEGIN
DBMS_OUTPUT.PUT_LINE(l_salutation);
DBMS_OUTPUT.PUT_LINE('p1 = ' || p1);
DBMS_OUTPUT.PUT_LINE('p2 = ' || p2);
END;
/
请注意,不需要带有命名过程的 DECLARE。 AS 和 BEGIN 之间的部分用于声明变量,就像我对 l_salutation 所做的那样。
您可以在调用程序时为这些参数提供值。在 SQL*Plus 中,它会像这样工作:
SET SERVEROUTPUT ON

accept p1 prompt "please enter 1 or 0: "
accept p2 prompt "please enter Y or N: "

exec HELLO (&p1, '&p2')

关于sql - PL/SQL : how do I prompt user input in a procedure?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32551087/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com