oracle数据库中的elsif后面可以跟if语句吗

oracle数据库中的elsif后面可以跟if语句吗,第1张

直接写判断条件。不用再写if标识符号。

在条件处理的内部可以再加if判断。例如:

if 条件1 then

处理1;

elsif 条件2 then

处理2;

if 条件3 then

处理3;

end if;

end if;

来晚了~

关于判断语句看数据库吧

SQL server 支持的查询语句命令case when:

结构如下:

case

when 条件1 then 结果1

when 条件2 then 结果2

……

end

在access中,不支持case when 结构,使用 iif 代替:

结构如下:

IIF(条件,结果1,结果2)

解释:当条件成立,取结果1;当条件不成立,取结果2

IIF(TypeID=-1,'一般客人',(select ClubTypeName from ClubType where CustomerInfoTypeID =ClubTypeID)) as TypeName

If ComboListRightsText = ComboListRightsList(0)

↑↑↑↑↑

上面这句少了then

根据你的代码修改如下:

If Trim(txtUserNameText) <> "" And Trim(txtPassWordText) <> "" And Trim(txtPassWord2Text) <> "" Then

If ComboListRightsText = ComboListRightsList(0) Then

Adodc1RecordSource = "select from Admin where username='" & Trim(txtUserNameText) & " '"

Adodc1Refresh

If Adodc1RecordsetEOF Then

Adodc1RecordsetAddNew

Adodc1RecordsetFields(0) = Trim(txtUserNameText)

Adodc1RecordsetFields(1) = Trim(txtPassWordText)

Adodc1RecordsetFields(2) = Trim(ComboListRightsText)

Adodc1RecordsetUpdate

Adodc1Refresh

FrmUserManageAdodc1RecordsetUpdate

FrmUserManageAdodc1Refresh

MsgBox "添加用户成功", vbOKOnly + vbInformation, "提示"

txtUserNameText = ""

txtPassWordText = ""

txtPassWord2Text = ""

ComboListRightsText = ComboListRightsList(0)

txtUserNameSetFocus

Else

MsgBox ("该用户已存在,请换其他用户名!")

txtUserNameText = ""

End If

Else

If Adodc2RecordsetEOF Then

Adodc2RecordsetAddNew

Adodc2RecordsetFields(0) = Trim(txtUserNameText)

Adodc2RecordsetFields(1) = Trim(txtPassWordText)

Adodc2RecordsetFields(2) = Trim(ComboListRightsText)

Adodc2RecordsetUpdate

Adodc2Refresh

FrmUserManageAdodc2RecordsetUpdate

FrmUserManageAdodc2Refresh

MsgBox "添加用户成功", vbOKOnly + vbInformation, "提示"

txtUserNameText = ""

txtPassWordText = ""

txtPassWord2Text = ""

ComboListRightsText = ComboListRightsList(0)

txtUserNameSetFocus

Else

MsgBox ("该用户已存在,请换其他用户名!")

txtUserNameText = ""

End If

End If

End If

+++++++++++++++++++++++++++

by the way 你写的真罗嗦

答案是D,其前面最近的尚未配对的if

C语言中,所有的执行语句都只能出现在函数之中。同样,函数的调用也只能出现在某函数的函数体内。函数的调用以两种方式出现:函数的嵌套与函数的递归。

C语言中,所有函数的定义都是互相平行和独立的,一个函数的定义不能包含另一个函数的定义,即不允许函数的嵌套定义。但函数的调用可以通过用一个函数调用另一个函数来实现,这就形成了函数的嵌套调用!C语言不限制嵌套的个数和层数,这样我们就可以自由,合理的组织程序的模块结构。

扩展资料:

特点

1、对象复用:如果编写面向对象的代码,就提高了重用以前编写的代码模块的机会。同样,如果创建面向对象的数据库对象,也就提高了数据库对象能够被重用的机会。

2、标准支持:如果创建标准的对象,那么它们被重用的机会就会提高。如果有多个应用或多个表使用同一数据库对象集合,那么它就是既成事实的数据库对象标准。

3、定义访问路径:对于每一个对象,用户可定义在其上运行的过程和函数,从而可以使数据和访问此数据的方法联合起来。有了用这种方式定义的访问路径,就可以标准化数据访问的方法并提高对象的可复用性。

参考资料:

百度百科——嵌套

下列语句部分是Mssql语句,不可以在access中使用。

SQL分类:

DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)

DML—数据 *** 纵语言(SELECT,DELETE,UPDATE,INSERT)

DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)

首先,简要介绍基础语句:

1、说明:创建数据库

CREATE DATABASE database-name

2、说明:删除数据库

drop database dbname

3、说明:备份sql server

--- 创建 备份数据的 device

USE master

EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1dat'

--- 开始 备份

BACKUP DATABASE pubs TO testBack

4、说明:创建新表

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],)

根据已有的表创建新表:

A:create table tab_new like tab_old (使用旧表创建新表)

B:create table tab_new as select col1,col2… from tab_old definition only

5、说明:

删除新表:drop table tabname

6、说明:

增加一个列:Alter table tabname add column col type

注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。

7、说明:

添加主键:Alter table tabname add primary key(col)

说明:

删除主键:Alter table tabname drop primary key(col)

8、说明:

创建索引:create [unique] index idxname on tabname(col…)

删除索引:drop index idxname

注:索引是不可更改的,想更改必须删除重新建。

9、说明:

创建视图:create view viewname as select statement

删除视图:drop view viewname

10、说明:几个简单的基本的sql语句

选择:select from table1 where 范围

插入:insert into table1(field1,field2) values(value1,value2)

删除:delete from table1 where 范围

更新:update table1 set field1=value1 where 范围

查找:select from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!

排序:select from table1 order by field1,field2 [desc]

总数:select count as totalcount from table1

求和:select sum(field1) as sumvalue from table1

平均:select avg(field1) as avgvalue from table1

最大:select max(field1) as maxvalue from table1

最小:select min(field1) as minvalue from table1

11、说明:几个高级查询运算词

A: UNION 运算符

UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。

B: EXCEPT 运算符

EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。

C: INTERSECT 运算符

INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。

注:使用运算词的几个查询结果行必须是一致的。

12、说明:使用外连接

A、left outer join:

左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。

SQL: select aa, ab, ac, bc, bd, bf from a LEFT OUT JOIN b ON aa = bc

B:right outer join:

右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。

C:full outer join:

全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。

其次,大家来看一些不错的sql语句

1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)

法一:select into b from a where 1

oracle 中if else 可以再pl/sql 中使用,

如果是要在SQL语句中达到这种效果可以用case when then else end;

mysql数据库中CASE WHEN语句。

case when语句,用于计算条件列表并返回多个可能结果表达式之一。

CASE 具有两种格式:

简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。

CASE 搜索函数计算一组布尔表达式以确定结果。

两种格式都支持可选的 ELSE 参数。

语法

简单 CASE 函数:

复制代码 代码如下:

CASE input_expression

WHEN when_expression THEN result_expression

[ n ]

[

ELSE else_result_expression

END

CASE 搜索函数:

复制代码 代码如下:

CASE

WHEN Boolean_expression THEN result_expression

[ n ]

[

ELSE else_result_expression

END

参数

input_expression

是使用简单 CASE 格式时所计算的表达式。Input_expression 是任何有效的 Microsoft SQL Server 表达式。

WHEN when_expression

使用简单 CASE 格式时 input_expression 所比较的简单表达式。When_expression 是任意有效的 SQL

Server 表达式。Input_expression 和每个 when_expression 的数据类型必须相同,或者是隐性转换。

占位符,表明可以使用多个 WHEN when_expression THEN result_expression 子句或 WHEN Boolean_expression THEN result_expression 子句。

THEN result_expression

当 input_expression = when_expression 取值为 TRUE,或者 Boolean_expression 取值为 TRUE 时返回的表达式。

result expression 是任意有效的 SQL Server 表达式。

ELSE else_result_expression

当比较运算取值不为 TRUE 时返回的表达式。如果省略此参数并且比较运算取值不为 TRUE,CASE 将返回 NULL

值。Else_result_expression 是任意有效的 SQL Server 表达式。Else_result_expression

和所有 result_expression 的数据类型必须相同,或者必须是隐性转换。

WHEN Boolean_expression

使用 CASE 搜索格式时所计算的布尔表达式。Boolean_expression 是任意有效的布尔表达式。

结果类型

从 result_expressions 和可选 else_result_expression 的类型集合中返回最高的优先规则类型。有关更多信息,请参见数据类型的优先顺序。

结果值

简单 CASE 函数:

计算 input_expression,然后按指定顺序对每个 WHEN 子句的 input_expression = when_expression 进行计算。

返回第一个取值为 TRUE 的 (input_expression = when_expression) 的 result_expression。

如果没有取值为 TRUE 的 input_expression = when_expression,则当指定 ELSE 子句时 SQL Server 将返回 else_result_expression;若没有指定 ELSE 子句,则返回 NULL 值。

CASE 搜索函数:

按指定顺序为每个 WHEN 子句的 Boolean_expression 求值。

返回第一个取值为 TRUE 的 Boolean_expression 的 result_expression。

如果没有取值为 TRUE 的 Boolean_expression,则当指定 ELSE 子句时 SQL Server 将返回 else_result_expression;若没有指定 ELSE 子句,则返回 NULL 值。

下面分享一些mysql case when语句的例子。

A 使用带有简单 CASE 函数的 SELECT 语句

在 SELECT 语句中,简单 CASE 函数仅检查是否相等,而不进行其它比较。

例子,使用 CASE 函数更改图书分类显示。

复制代码 代码如下:

USE pubs

GO

SELECT Category =

CASE type

WHEN 'popular_comp' THEN 'Popular Computing'

WHEN 'mod_cook' THEN 'Modern Cooking'

WHEN 'business' THEN 'Business'

WHEN 'psychology' THEN 'Psychology'

WHEN 'trad_cook' THEN 'Traditional Cooking'

ELSE 'Not yet categorized'

END,

CAST(title AS varchar(25)) AS 'Shortened Title',

price AS Price

FROM titles

WHERE price IS NOT NULL

ORDER BY type, price

COMPUTE AVG(price) BY type

GO

注释,后来我试了一下不让用category=。

我使用的代码为:

复制代码 代码如下:

SELECT

case gender

WHEN 1 THEN 'NAN'

WHEN 0 THEN 'NV'

end as gender

FROM

t_swidy_day_nutrient

结果集:

Category Shortened Title Price

------------------- ------------------------- --------------------------

Business You Can Combat Computer S 299

Business Cooking with Computers: S 1195

Business The Busy Executive's Data 1999

Business Straight Talk About Compu 1999

avg

==========================

1373

Category Shortened Title Price

------------------- ------------------------- --------------------------

Modern Cooking The Gourmet Microwave 299

Modern Cooking Silicon Valley Gastronomi 1999

avg

==========================

1149

Category Shortened Title Price

------------------- ------------------------- --------------------------

Popular Computing Secrets of Silicon Valley 2000

Popular Computing But Is It User Friendly 2295

avg

==========================

2148

Category Shortened Title Price

------------------- ------------------------- --------------------------

Psychology Life Without Fear 700

Psychology Emotional Security: A New 799

Psychology Is Anger the Enemy 1095

Psychology Prolonged Data Deprivatio 1999

Psychology Computer Phobic AND Non-P 2159

avg

==========================

1350

Category Shortened Title Price

------------------- ------------------------- --------------------------

Traditional Cooking Fifty Years in Buckingham 1195

Traditional Cooking Sushi, Anyone 1499

Traditional Cooking Onions, Leeks, and Garlic 2095

avg

==========================

1596

(21 row(s) affected)

B 使用带有简单 CASE 函数和 CASE 搜索函数的

SELECT 语句

在 SELECT 语句中,CASE 搜索函数允许根据比较值在结果集内对值进行替换。

例子:根据图书的价格范围将价格(money 列)显示为文本注释。

复制代码 代码如下:

USE pubs

GO

SELECT 'Price Category' =

CASE

WHEN price IS NULL THEN 'Not yet priced'

WHEN price < 10 THEN 'Very Reasonable Title'

WHEN price >= 10 and price < 20 THEN 'Coffee Table Title'

ELSE 'Expensive book!'

END,

CAST(title AS varchar(20)) AS 'Shortened Title'

FROM titles

ORDER BY price

GO

结果集:

Price Category Shortened Title

--------------------- --------------------

Not yet priced Net Etiquette

Not yet priced The Psychology of Co

Very Reasonable Title The Gourmet Microwav

Very Reasonable Title You Can Combat Compu

Very Reasonable Title Life Without Fear

Very Reasonable Title Emotional Security:

Coffee Table Title Is Anger the Enemy

Coffee Table Title Cooking with Compute

Coffee Table Title Fifty Years in Bucki

Coffee Table Title Sushi, Anyone

Coffee Table Title Prolonged Data Depri

Coffee Table Title Silicon Valley Gastr

Coffee Table Title Straight Talk About

Coffee Table Title The Busy Executive's

Expensive book! Secrets of Silicon V

Expensive book! Onions, Leeks, and G

Expensive book! Computer Phobic And

Expensive book! But Is It User Frien

(18 row(s) affected)

C 使用带有 SUBSTRING 和 SELECT 的 CASE 函数

例子,使用 CASE 和 THEN 生成一个有关作者、图书标识号和每个作者所著图书类型的列表。

首先,来看下 CASE 的语法。在一般的 SELECT 中,其语法如下:

复制代码 代码如下:

SELECT <myColumnSpec> =

CASE

WHEN <A> THEN <somethingA>

WHEN <B> THEN <somethingB>

ELSE <somethingE>

END

以上代码,需要用具体的参数代替尖括号中的内容。

甚至还可以组合这些选项,添加一个 ORDER BY 子句,例如:

复制代码 代码如下:

USE pubs

GO

SELECT

CASE

WHEN price IS NULL THEN 'Unpriced'

WHEN price < 10 THEN 'Bargain'

WHEN price BETWEEN 10 and 20 THEN 'Average'

ELSE 'Gift to impress relatives'

END AS Range,

Title

FROM titles

GROUP BY

CASE

WHEN price IS NULL THEN 'Unpriced'

WHEN price < 10 THEN 'Bargain'

WHEN price BETWEEN 10 and 20 THEN 'Average'

ELSE 'Gift to impress relatives'

END,

Title

ORDER BY

CASE

WHEN price IS NULL THEN 'Unpriced'

WHEN price < 10 THEN 'Bargain'

WHEN price BETWEEN 10 and 20 THEN 'Average'

ELSE 'Gift to impress relatives'

END,

Title

GO

除了选择自定义字段之外,在很多情况下 CASE 都非常有用。

稍加深入,还可以得到以前认为不可能得到的分组排序结果集。

使用CASE WHEN进行字符串替换处理

在SELECT查询中使用CASE WHEN

复制代码 代码如下:

/

mysql> SELECT Name, RatingID AS Rating,

-> CASE RatingID

-> WHEN 'R' THEN 'Under 17 requires an adult'

-> WHEN 'X' THEN 'No one 17 and under'

-> WHEN 'NR' THEN 'Use discretion when renting'

-> ELSE 'OK to rent to minors'

-> END AS Policy

-> FROM DVDs

-> ORDER BY Name;

+-----------+--------+------------------------------+

| Name | Rating | Policy |

+-----------+--------+------------------------------+

| Africa | PG | OK to rent to minors |

| Amadeus | PG | OK to rent to minors |

| Christmas | NR | Use discretion when renting |

| Doc | G | OK to rent to minors |

| Falcon | NR | Use discretion when renting |

| Mash | R | Under 17 requires an adult |

| Show | NR | Use discretion when renting |

| View | NR | Use discretion when renting |

+-----------+--------+------------------------------+

8 rows in set (001 sec)

/

Drop table DVDs;

CREATE TABLE DVDs (

ID SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,

Name VARCHAR(60) NOT NULL,

NumDisks TINYINT NOT NULL DEFAULT 1,

RatingID VARCHAR(4) NOT NULL,

StatID CHAR(3) NOT NULL

)

ENGINE=INNODB;

INSERT INTO DVDs (Name, NumDisks, RatingID, StatID)

VALUES ('Christmas', 1, 'NR', 's1'),

('Doc', 1, 'G', 's2'),

('Africa', 1, 'PG', 's1'),

('Falcon', 1, 'NR', 's2'),

('Amadeus', 1, 'PG', 's2'),

('Show', 2, 'NR', 's2'),

('View', 1, 'NR', 's1'),

('Mash', 2, 'R', 's2');

SELECT Name, RatingID AS Rating,

CASE RatingID

WHEN 'R' THEN 'Under 17 requires an adult'

WHEN 'X' THEN 'No one 17 and under'

WHEN 'NR' THEN 'Use discretion when renting'

ELSE 'OK to rent to minors'

END AS Policy

FROM DVDs

ORDER BY Name;

if @page = 1

select id from tablename where id >=(select id from tablename where page =@page) and id<=(select id from tablename where page =@page+1)

else

select id from tablename where id >=(select id from tablename where page =@page) and id<=(select max(id) from tablename)

if Request("action")="lock" then

判断Request("action")返回的参数为lock的时候,直接更新数据库user表的id为Request("id")返回参数的lock字段为1

elseif Request("action")="unlock" then

判断Request("action")返回的参数为unlock的时候,直接更新数据库user表的id为Request("id")返回参数的lock字段为0

----------------------------------------

以上的作用为直接 *** 作数据库中某一个用户的未锁或已锁

以上就是关于oracle数据库中的elsif后面可以跟if语句吗全部的内容,包括:oracle数据库中的elsif后面可以跟if语句吗、一条SQL IF ELSE 语句查询的问题、关于VB中If Else嵌套语句等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10146796.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存