在PL / SQL中选择语句

时间:2017-12-20 21:34:07

标签: sql oracle plsql

有没有人知道如何在pl / sql命令中使用预先存在的数据库中的表和列。我使用Oracles网页上的一些东西作为例子。

SQL> declare

2    v_line varchar2(40):= '&v_string';

3  begin

4    v_line := 'Hello '||v_line;

5    dbms_output.put_line (v_line);

6  end;

7  /



old 2:   v_line varchar2(40):= '&v_string';

New 2:   v_line varchar2(40):= 'Thomas';



Hello Thomas



PL/SQL procedure successfully completed.

我希望能够操纵上面的数据。假设我有一个名为name_s的表,我有名为n_first和n_last的列,我想使用这些列输出“Hello Thomas'但使用那些表。

我是pl.sql的新手并尝试学习语法。

我不确定你是否可以,

DECLARE
n_first 
n_last
   BEGIN 
   SELECT * FROM name_s
   n_fisrt := 'Thomas'||n_first; 

        dbms_output.put_line(n_first)
    END;
/
Desired Output: 'Thomas'

我知道这在语法上并不正确,但我只是想了解如何使用现有表中的数据来获得这种所需的输出

编辑:上表是假设的,本例中只包含两列。现在使用真实的表格和数据。

SET SERVEROUTPUT ON;
begin
for cur_r in (select loc_t from loc_t_matrix where store_s in(1,2,3,4,5); loop
dbms_output.put_line('Hello store' || cur_r.loc_traits );
end loop;
end;
/    

以上不编译

2 个答案:

答案 0 :(得分:0)

你需要这样的东西

declare    
      v_authName author.author_last_name%type;    
   begin    
     select    
        author_last_name into v_authName    
      from    
        author    
      where   
        author_key = 'A103';    
     dbms_output.put_line('Name: '||v_authName);    
   end;    
/



Name: weaton

http://www.dba-oracle.com/t_pl_sql_plsql_select_into_clause.htm

答案 1 :(得分:0)

由于表通常包含多行,我假设NAME_S也包含多行。在这种情况下,显示这些名称的最简单选项是游标FOR循环(谷歌为它)。例如:

begin
  for cur_r in (select n_first, n_last from name_s) loop
    dbms_output.put_line('Hello ' || cur_r.n_first ||' '||cur_r.n_last);
  end loop;
end;
/  

正如您所看到的,在这种情况下,您不需要局部变量。

如果您使用SELECT ... INTO(由mCeviker建议),除非它引发TOO-MANY-ROWS(因为您不能将所有行名称放入单个变量),否则这将起作用