[英]While inserting multiple rows what does the statement 'select 1 from dual' do?
使用以下样式将多行插入表中时:
insert all
into ghazal_current (GhazalName,Rating) values('Ajab Apna Haal Hota Jo Visaal-e-Yaar Hota',5)
into ghazal_current (GhazalName,Rating) values('Apne Hothon Par Sajana Chahta Hun',4)
into ghazal_current (GhazalName,Rating) values('Shaam Se Aankh Mein Nami Si Hai',4)
into ghazal_current (GhazalName,Rating) values('Tumhe Yaad Ho Ke Na Yaad Ho',3)
select 1 from dual;
声明select 1 from dual
意义中select 1 from dual
是什么意思? 这是什么?
有些SQL数据库需要的所有值来自一个表或表状物体,而另一些允许查询构建值无中生有 :
-- MySQL, sqlite, PostgreSQL, HSQLdb, and many others permit
-- a "naked" select:
SELECT 1;
-- Others *require* a FROM target, like Oracle.
SELECT 1 FROM DUAL;
-- ...and Firebird/Interbase:
SELECT 1 FROM RDB$DATABASE;
-- ...and DB2:
SELECT 1 FROM SYSIBM.SYSDUMMY1;
这里DUAL的基数很重要。 如果它有多行,则结果集将有多行。 例如,当您SELECT 1 FROM A_Table_With_Ten_Rows
时会发生什么?
SQL构造VALUES (<row-value-expression>)
是行值构造函数。 VALUES (1, 2, 3)
“创建”一行值,就像SELECT 1, 2, 3
一样。
甲骨文,当然,要求这些值从什么地方来。
作为演示,不是在INSERT ALL结尾处从DUAL中选择SELECT,而是尝试一个包含N行的表,并且您将看到每个VALUES()
行都插入了N次。
有一些关于在查询中使用dual的示例:
select sysdate from dual /--it returns date of system
SELECT chr(223) FROM dual /--it returns character of Asciهi code
select my_sequence.nextval from dual; /-- It returns the next value of a sequence
select to_char(sysdate,'yyyy/mm/dd','nls_calendar=persian')from dual
/--returns persian date of system
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.