存储过程if嵌套
❶ 存储过程 if语句的使用
那就要看一下你的readerinfo表上面是不是有触发器了:
create proc sp_test
as
update
set rrrid=case when rrrid=0 then 20 else 0 end
where readerid='s001'
❷ 请教ms sqlserver存储过程如何写多个if语句
select @user_blog_lock='yes'elseselect @user_blog_lock='no'GO这样写,后面那二条语句是没有执行到的。用到else if 是错误的语法,如果都都用if,第二条语句以后都不能执行了
变量的输入是对的。
第二、三条IF语句是不能执行了。看联机丛书 F1
-----------------------IF...ELSE在执行 Transact-SQL 语句时强加条件。如果条件满足(布尔表达式返回 TRUE 时),则在 IF 关键字及其条件之后执行 Transact-SQL 语句。可选的 ELSE 关键字引入备用的 Transact-SQL 语句,当不满足 IF 条件时(布尔表达式返回 FALSE),就执行这个语句。
语法IF Boolean_expression
{ sql_statement | statement_block }[ ELSE{ sql_statement | statement_block } ]参数Boolean_expression
是返回 TRUE 或 FALSE 的表达式。如果布尔表达式中含有 SELECT 语句,必须用圆括号将 SELECT 语句括起来。
{sql_statement | statement_block}
Transact-SQL 语句或用语句块定义的语句分组。除非使用语句块,否则 IF 或 ELSE 条件只能影响一个 Transact-SQL 语句的性能。若要定义语句块,请使用控制流关键字 BEGIN 和 END。如果在 IF...ELSE 块的 IF 区和 ELSE 区都使用了 CREATE TABLE 语句或 SELECT INTO 语句,那么 CREATE TABLE 语句或 SELECT INTO 语句必须指向是相同的表名。
注释IF...ELSE 结构可以用在批处理中,存储过程中(经常使用这种结构测试是否存在着某个参数),以及特殊查询中。
可以在其它 IF 之后或在 ELSE 下面,嵌套另一个 IF 测试。对于嵌套层数没有限制。
示例
A. 使用一个 IF...ELSE 块
下面的示例显示带有语句块的 IF 条件。如果书的平均价格不低于 $15,那么就显示文本:Average title price is more than $15.
USE pubsIF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15BEGINPRINT 'The following titles are excellent mod_cook books:'PRINT ' 'SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'ENDELSEPRINT 'Average title price is more than $15.'
下面是结果集:
The following titles are excellent mod_cook books:Title-----------------------------------
Silicon Valley Gastronomic Treats
The Gourmet Microwave
(2 row(s) affected)
B. 使用多个 IF...ELSE 块
下面的示例使用了两个 IF 块。如果书的平均价格不低于 $15,那么就显示文本:Average title price is more than $15。如果现代烹调书的平均价格高于 $15,则显示现代烹调书价格昂贵的语句。
USE pubsIF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15BEGINPRINT 'The following titles are excellent mod_cook books:'PRINT ' 'SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'ENDELSEIF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') > $15BEGINPRINT 'The following titles are expensive mod_cook books:'PRINT ' 'SELECT SUBSTRING(title, 1, 35) AS Title
❸ mysql存储过程中if的嵌套
前几日写存储过程,使用嵌套if语句的时候,碰到一个奇怪的问题,多方找原因无果。后发现是一个很sb的问题。。。
if condition1 then
if condition1.1 then
do something1.1;
else if condition1.2 then
do something1.2;
else -- 报错的地方
do something1.3;
endif;
else
do something2.2;
endif;
如上,else那里一直在报错。
使用了排除法,把else那块去掉,仍报错。
整个中间的if那段去掉,编译成功。
else if和else去掉,编译成功。
else if去掉,编译成功。
好吧,else if的问题。elseif应该是没有空格的!!!
排除法是个好方法,细心是个好习惯😂😂😂。。。
❹ oracle存储过程中嵌套多个if
BEGIN
IF (1 = 1) THEN
DBMS_OUTPUT.PUT_LINE('这是第一层的if');
IF (1 = 1) THEN
DBMS_OUTPUT.PUT_LINE('这是第二层的if');
END IF;
ELSE
DBMS_OUTPUT.PUT_LINE('这是第一层的else');
END IF;
END;
这个是我测试的 不会被第一个if截断 是不是你脚本有问题?
❺ oracle 的存储过程if怎么嵌套啊
我给你举个例子:
--配送量(万箱)
select sum(QUANTITY_SUM) into quantity_sum from DWV_OUT_DIST_BILL where to_char(DIST_DATE,'YYYYMM')=month ;
if quantity_sum is null then
quantity_sum:=0;
end if;
--转换成万箱
quantity_sum :=quantity_sum/50/10000;
❻ 在sqlserver的存储过程中怎样使用if-else if
跟程序中使用差不多,if,else
if,else,只不过在sqlserver中,{}使用begin和end代替,里面嵌套什么的,都跟程序中写的差不多,简单实例如下:
declare
@a
intset
@a=1if
@a<0begin
select
'小于0'endelse
if
@a=0begin
select
'等于0'endelsebegin
if
@a>0
and
@a<1
begin
select
'大于0小于1'
end
else
begin
select
'大于1'
endend在简单看看程序代码:int
a=1;if(a<0){
输出小于0;}else
if(a==0){
输出等于0;}else{
if(a>0&&a<1)
{
输出大于0小于1;
}
else
{
输出大于1
}}
❼ sql server存储过程的嵌套问题
在两个print前面再加一条insert语句啊,把相关信息先写到表里,再打印信息,类似于
先建表
CREATE TABLE ERRORINFOR (username varchar(20),errorinfo varchar(50))
再加一条语句。
insert into errorinfor values(@username,'已经存在')
PRINT '用户名:'+@username+' 已经存在!!!'
❽ 求教一下oracle存储过程中if的嵌套使用问题
一、
if()then
if()then
end if;
end if;
二、
if()then
elsif()then
end if;
❾ oracle 的存储过程if怎么嵌套啊
我给你举个例子:
--配送量(万箱)
select
sum(QUANTITY_SUM)
into
quantity_sum
from
DWV_OUT_DIST_BILL
where
to_char(DIST_DATE,'YYYYMM')=month
;
if
quantity_sum
is
null
then
quantity_sum:=0;
end
if;
--转换成万箱
quantity_sum
:=quantity_sum/50/10000;
❿ 在MYSQL存储过程中case语句里嵌套IF语句行吗
你的case内的if中的 getchar()应该只执行一次,用变量保存,如case‘S':改为: 在switch(in)前面加个 char ch; case 'S':printf("目前无法判断,请输入第二个字符!\n"); ch = getchar(); if(ch=='a') printf("Saturday."); else if (ch=='u') //...