【问题标题】:Select statement in PL/SQLPL/SQL 中的选择语句
【发布时间】:2017-12-20 21:34:06
【问题描述】:

有谁知道如何在 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;
/    

上面没有编译

【问题讨论】:

    标签: sql oracle plsql


    【解决方案1】:

    你需要这样的东西吗

    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

    【讨论】:

      【解决方案2】:

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

      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(因为您不能将所有行的名称放入单个变量中),否则它将起作用。

      【讨论】:

        猜你喜欢
        • 2018-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-09
        • 1970-01-01
        相关资源
        最近更新 更多