【发布时间】:2015-12-09 15:29:12
【问题描述】:
这是关于我正在做的一个大型项目的一小部分的问题。我尝试了以下方法,但只得到下面的两个错误:
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;
/
错误(2,5):PLS-00103:预期时遇到符号“DECLARE” 下列之一:开始函数杂注过程子类型类型 当前的 光标删除存在先前的外部语言符号“开始”是 替换为“DECLARE”以继续。
错误(10,8):PLS-00103:遇到符号“文件结尾”时 期待以下之一:(开始案例声明结束异常 exit for goto if loop mod null pragma raise return select update 而与
插入打开的回滚保存点设置 sql 执行提交 forall 合并 管道清洗
我们获得了如何标记代码的标记方案,对于本节,相关标准是:
“脚本是否使用过程?”和
“脚本是否提示正确/错误和团队/个人并正确处理提供的数据?”。
项目简介引用“开发一个提示正确/错误的过程(使用 &),然后更新表”(其中 table 是表的名称)。
变量的目的是更新现有的记录属性。即如果用户选择 1 和 n 则将记录中的 null 更新为 2。如果是 1 和 y 则更新为 1,如果是 0 和 y/n 则更新为 0。
【问题讨论】:
-
PL/SQL 在 RDBMS 上运行时不处理用户交互,因此您应该首先以不同的方式获取参数,然后通过绑定将它们传递给过程或匿名块。用户交互必须由客户端或中间层架构处理。
-
还有一件事 & 符号只被 SQL*Plus 接受,它预处理语句并在将具有替换值的代码发送到 RDBMS 之前进行所需的替换。请您的同事帮助您查找有关它的信息。服务器编程的这一面对于新手来说可能很难看。请注意,一旦 PL/SQL 块开始,就没有简单的交互方式,最好避免这样做。
标签: sql oracle plsql user-input procedure