当前位置: 首页 > 知识库问答 >
问题:

在存储过程(oracle)中输出一行

利永年
2023-03-14

我试图效仿http://dba-oracle.com/t_pl_sql_plsql_select_into_clause.htm

但是当我这样做的时候

create or replace PROCEDURE age
is
declare
info movie%rowtype;
BEGIN
dbms_output.enable();
select * into info from movie where mo_id=1;

dbms_output.put_line('The name of the product is ' || info.mo_id);

END age;

/

它给出了几个错误:

错误(4,1): PLS-00103:在期望以下情况之一时遇到符号“DECLARE”:开始函数杂注过程子类型当前游标删除存在先前的外部语言符号“begin”被替换为“DECLARE”以继续。

错误(14,8):PLS-00103:在预期以下情况之一时遇到符号“文件结束”:(开始情况声明结束异常退出,如果循环mod null pragma引发返回选择更新

它怎么了?

共有2个答案

殳勇
2023-03-14

您的代码中有几件事情需要注意:首先。正如@Polppan已经提到的,从存储过程中移除< code>DECLARE关键字。没有这个必要。然而,当您编写匿名PL/SQL块时,您将需要它。第二。如果您在过程中使用< code > DBMS _ output . enable()来显示行,我假设您为此使用sql*plus,您将需要调用< code > DBMS _ output . get _ lines(),否则它不会给出您想要的结果。因此,为了简化使用SQL * plus < code > set server output on 命令来启用输出。并且不要混合使用< code > DBMS _ output . enable()和< code>setserveroutput on -使用其中任何一个。不是两者都有。这里有一个例子:

SQL> CREATE OR REPLACE PROCEDURE Print_data
  2  is
  3    l_var_1 varchar2(101);
  4  BEGIN
  5    select 'Some data'
  6      into l_var_1
  7      from dual;
  8    dbms_output.put_line(l_var_1);
  9  END;
 10  /

Procedure created

SQL> set serveroutput on;
SQL> exec print_data;

Some data

PL/SQL procedure successfully completed

SQL> 
朱锦
2023-03-14

尝试以下操作,您不需要在过程中声明。

create or replace PROCEDURE
age
is
info movie%rowtype;
BEGIN
--dbms_output.enable();
select * into info from movie where mo_id=1;

dbms_output.put_line('The name of the product is ' || info.mo_id);

END age;
/

要执行这个程序,你可以

exec age
 类似资料:
  • 问题内容: 简而言之:我正在尝试在Entity Framework中运行Oracle存储过程(我知道这听起来很奇怪,但是在一般应用程序中使用Entity Framework,但是由于修改密钥的限制,EF无法处理此特定命令。值)。 过程具有一些参数(仅IN),并更新表中的值。我通过运行测试了它: 它工作正常。 我的参数定义如下: 我的查询是: 我正在尝试从C#代码执行它。即通过运行: 我收到错误OR

  • 我可以在Oracle中通过ODBC执行一批存储过程吗?存储过程具有我使用参数标记绑定的输入参数。 在SQLServer中,我有这个功能,在DB2中,我只能进行批处理插入/更新,但我不能从ODBC/C代码批处理存储过程。 Oracle似乎支持插入语句的批处理,如果使用JDBC,也可以批处理存储过程。 是否可以做同样的事情,但使用对存储过程和ODBC的调用? 谢谢

  • 本文向大家介绍asp.net中oracle 存储过程(图文),包括了asp.net中oracle 存储过程(图文)的使用技巧和注意事项,需要的朋友参考一下 在大型数据库系统中,存储过程和触发器具有很重要的作用。无论是存储过程还是触发器,都是SQL 语句和流程控制语句的集合。 ORACLE代码 C#代码 调用方法 以上内容是通过代码介绍了asp.net中oracle存储过程。 接下来通过第二种的方式

  • 问题内容: 我在SQL Server 2008 R2中有一个Oracle链接服务器。我需要执行Oracle存储过程(在第一个过程中使用输出参数,在第二个过程中使用输入参数): 我没有找到有关此问题的完整文档,只有带有无参数选择/非选择过程的简单示例,并且想知道如何调用这些过程,具有内部select的过程以及具有基本参数类型的多参数过程。 问题答案: 它应该像这样工作: 如果您有几个参数,则可能如下

  • 如何使用表(X)作为输入参数编写Oracle存储过程,并且在过程中使用表X与另一个表Y联接? 表X将有数千条记录。 不希望将表名传递为varchar,然后使用动态SQL(因此,此选项不在画面中)

  • 问题内容: 我有一个来自此(google book )的mysql存储过程,一个例子是这样的: 该程序编译正常。(我在ubuntu中使用MySQL查询浏览器)。 但是,当我调用该过程时: (也在查询浏览器中) 它返回一个错误: 为什么这个例子不起作用? 问题答案: 无法复制。对我来说效果很好: 也许您应该粘贴整个错误消息,而不是对其进行汇总。