Oracle SQL在Select或For-Loop中使用变量

时间:2017-09-22 17:19:04

标签: sql oracle for-loop plsql

我需要验证几个表中的数据。本质上,我想为下面的语句写一个循环,包含给定表中的所有字段。

sql> select fld1, count(*)
from table1
group by fld1
;

我认为我需要创建至少2个变量。将提示第一个变量提供表名。

第二个var将基于以下结果:

select column_name from user_tab_col_statistics where table_name = table_variable

我是否还要创建临时表并选择进入该表?

2 个答案:

答案 0 :(得分:0)

根据我的理解,您可以将值存储在临时表中。

1.取表名称&列名放在Variable Var_Table_name,Var_Col

select Var_Col, count(*) into Var1,Var2 from Var_Table group by fld1 ;

表示所有表格列。您可以创建临时表并插入如下所述的值并存储在临时表中。

1.Var_Table_name

2.Var_Col

3.Var1

4.Var2

答案 1 :(得分:0)

PL / SQL不提示。另一方面,SQL * Plus将提示替换变量。请参阅以下示例。

MPOWEL01> @stack
MPOWEL01>
MPOWEL01> select table_name, column_name from user_tab_col_statistics where table_name = upper('&tbl_nm')
  2  order by column_name;
Enter value for tbl_nm: marktest
old   1: select table_name, column_name from user_tab_col_statistics where table_name = upper('&tbl_nm')
new   1: select table_name, column_name from user_tab_col_statistics where table_name = upper('marktest')

TABLE_NAME                     COLUMN_NAME
------------------------------ ------------------------------
MARKTEST                       FLD1
MARKTEST                       FLD2
MARKTEST                       FLD3
MARKTEST                       FLD4

MPOWEL01>

set verify off将从输出中消除替换消息行。

在PL / SQL中,您需要SELECT INTO变量或使用游标。

我认为你可能只能使用SQL来生成你想要运行的SELECT语句,但你究竟是什么意思通过'验证数据'?验证如何?用什么标准?