当前位置: 首页 > 面试题库 >

选择一个列值并将其存储在变量oracle sql中

亢建木
2023-03-14
问题内容

我想获取特定的列值a.id并将其存储到变量v_id中。然后使用此值传递到存储过程。

DECLARE v_id a.id%TYPE;
BEGIN
SELECT id  into v_id from a where a.name='test' and rownum <2 order by id desc;
Print v_id;
doSomething(v_id);
END;
/

我在Oracle SQL Developer中收到此错误:

错误报告:ORA-06550:第3行,第7列:PLS-00103:遇到以下情况之一时遇到了符号“ V_ID”:

:=。(@%;用符号“:=”代替“ V_ID”才能继续。06550. 00000-“行%s,列%s:\ n%s” *原因:通常是PL /
SQL编译错误。 :


问题答案:

如果你想使用rownumorder by必须 在一个子查询放的顺序。没有其他方法可以保证您获得正确的价值。

可能不会存在id与您的查询相匹配的可能性也是一种很好的做法。我添加了一个额外的begin... end;块来处理这个问题。

declare
   v_id a.id%type;
begin

   begin
      select id into v_id 
        from ( select id
                 from a 
                 where name = 'test' 
                 order by id desc )
       where rownum < 2 
             ;
    exception when no_data_found then
      v_id := null;
    end;

   dbms_output.put_line(v_id);
   doSomething(v_id);

end;
/

正如@raukh指出的(虽然我正在写这篇文章!)问题是print,应该是dbms_output.put_line()



 类似资料:
  • 问题内容: 因此,我正在编写此存储过程,而且我真的很喜欢SQL。 我对你们的问题是: 我可以选择整行并将其存储在变量中吗? 我知道我可以做类似的事情: 但是我可以从中选择整行并将其存储在变量中吗? 问题答案: 您可以将字段选择为多个变量: 另一种可能更好的方法是使用表变量: 然后,您可以像常规表一样从表变量中进行选择。

  • 问题内容: 是否可以在一列中选择2列并合并它们? 例子: 问题答案: 是的,就像您所做的那样: 如果查询数据库,您将得到正确的答案。 发生的事情是您要求表达。一个非常简单的表达式只是一个列名,一个更复杂的表达式中可以包含公式等。

  • 因此,为了测试我的搜索结果是否因我输入的关键字而异,我想在键入关键字之前存储搜索结果的节点列表,然后将它们与添加关键字后得到的搜索结果的节点列表进行比较,但我无法使其起作用。 我试过: 然而,这并没有给我一个节点。我还试图使用一个带有的clientFunction,但是TestCafe然后告诉我使用Selector。 要怎么做?有没有更好的方法来测试这个,我没看到?

  • 问题内容: 我可以在MySQL的同一选择查询中将多个列选择到多个变量中吗? 例如: 正确的语法是什么? 问题答案: 您的语法不太正确:您需要按顺序在INTO之前列出字段,并在以下列出相应的目标变量:

  • 本文向大家介绍将列的值存储到MySQL存储过程的变量中,包括了将列的值存储到MySQL存储过程的变量中的使用技巧和注意事项,需要的朋友参考一下 要声明变量,请在MySQL存储过程中使用DECLARE。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 这是创建存储过程并将上述表的列值存储在存储过程变量中的查询- 调用存储过程- 这

  • 我正在做一个项目,我想要一个功能,在WhatsApp上给我们留言,为此,我使用了使用intent的WhatsApp API。在“WhatsApp上向我们发送消息”功能中,我使用了2-3个不同的数字,并将其存储在列表中,并使用random()方法从列表中检索该数字,正如我所希望的那样,每当用户使用该功能时,他/她每次都必须连接不同的数字。但现在我想更改列表中存储的数字。 那么,我如何在每次不改变实际