当前位置:首页 » 存储配置 » 存储过程判断语句

存储过程判断语句

发布时间: 2022-07-10 18:46:54

Ⅰ 在存储过程中如何用到判断语句

if .. then
elsif ... then
elsif ...
endif
就这语法结构

Ⅱ 存储过程的if,else怎么写

不同的数据库中,存储过程中if else 语句写法有一些差别。

如果是sqlServer数据库,存储过程的if, else语句可以这样写:

ifa>b
Begin
print'a'
End
Elseifa<b
Begin
print'b'
End
Else
Begin
print'代码'
End

Oracle 采用下面这种写法:

IFtestvalue>100THEN
dbms_output.put_line('100+');
ELSIFtestvalue=100THEN
dbms_output.put_line('100');
ELSE
dbms_output.put_line('100-');
ENDIF;

DB2, MYSQL 是下面这种写法: ( 与 Oracle 区别在于那个 ELSIF )

IFp_val>100THEN
INSERTINTOoutput_debugVALUES('100+');
ELSEIFp_val=100THEN
INSERTINTOoutput_debugVALUES('100');
ELSE
INSERTINTOoutput_debugVALUES('100-');
ENDIF;

Ⅲ 存储过程判断

create procere procName
@id int
as
if(exists(select * from tableName where id=@id))
begin
update tableName
set columnName='value'
end
else
begin
insert into tableName
values('values1','values2')
end
打字不易,如满意,望采纳。

Ⅳ oracle存储过程 判断语句怎么写

if 条件1 then 语句1
elsif 条件2 then 语句2
else 语句3
end if;

Ⅳ 存储过程中用什么来判断sql语句是否执行成功

Transact-SQL 参考

@@ERROR
返回最后执行的 Transact-SQL 语句的错误代码。

语法
@@ERROR

返回类型
integer

注释
当 Microsoft® SQL Server™ 完成 Transact-SQL 语句的执行时,如果语句执行成功,则 @@ERROR 设置为 0。若出现一个错误,则返回一条错误信息。@@ERROR 返回此错误信息代码,直到另一条 Transact-SQL 语句被执行。您可以在 sysmessages 系统表中查看与 @@ERROR 错误代码相关的文本信息。

由于 @@ERROR 在每一条语句执行后被清除并且重置,应在语句验证后立即检查它,或将其保存到一个局部变量中以备事后查看。

示例
A.用 @@ERROR 检测一个特定错误
下面的示例用 @@ERROR 在一个 UPDATE 语句中检测限制检查冲突(错误 #547)。

USE pubs
GO
UPDATE authors SET au_id = '172 32 1176'
WHERE au_id = "172-32-1176"

IF @@ERROR = 547
print "A check constraint violation occurred"

B.用 @@ERROR 有条件地退出一个过程
在此示例中,IF...ELSE 语句在存储过程中的 INSERT 语句后检测 @@ERROR。@@ERROR 变量的值将决定传给调用程序的返回值,以指示此过程的成功与失败。

USE pubs
GO

-- Create the procere.
CREATE PROCEDURE add_author
@au_id varchar(11),@au_lname varchar(40),
@au_fname varchar(20),@phone char(12),
@address varchar(40) = NULL,@city varchar(20) = NULL,
@state char(2) = NULL,@zip char(5) = NULL,
@contract bit = NULL
AS

-- Execute the INSERT statement.
INSERT INTO authors
(au_id, au_lname, au_fname, phone, address,
city, state, zip, contract) values
(@au_id,@au_lname,@au_fname,@phone,@address,
@city,@state,@zip,@contract)

-- Test the error value.
IF @@ERROR <> 0
BEGIN
-- Return 99 to the calling program to indicate failure.
PRINT "An error occurred loading the new author information"
RETURN(99)
END
ELSE
BEGIN
-- Return 0 to the calling program to indicate success.
PRINT "The new author information has been loaded"
RETURN(0)
END
GO

C.用 @@ERROR 检测几条语句的成功
下面的示例取决于 INSERT 和 DELETE 语句的成功操作。局部变量在两条语句后均被设置为 @@ERROR 的值,并且用于此操作的共享错误处理例程中。

USE pubs
GO
DECLARE @del_error int, @ins_error int
-- Start a transaction.
BEGIN TRAN

-- Execute the DELETE statement.
DELETE authors
WHERE au_id = '409-56-7088'

-- Set a variable to the error value for
-- the DELETE statement.
SELECT @del_error = @@ERROR

-- Execute the INSERT statement.
INSERT authors
VALUES('409-56-7008', 'Bennet', 'Abraham', '415 658-9932',
'6223 Bateman St.', 'Berkeley', 'CA', '94705', 1)
-- Set a variable to the error value for
-- the INSERT statement.
SELECT @ins_error = @@ERROR

-- Test the error values.
IF @del_error = 0 AND @ins_error = 0
BEGIN
-- Success. Commit the transaction.
PRINT "The author information has been replaced"
COMMIT TRAN
END
ELSE
BEGIN
-- An error occurred. Indicate which operation(s) failed
-- and roll back the transaction.
IF @del_error <> 0
PRINT "An error occurred ring execution of the DELETE
statement."

IF @ins_error <> 0
PRINT "An error occurred ring execution of the INSERT
statement."

ROLLBACK TRAN
END
GO

D. 与 @@ROWCOUNT 一同使用 @@ERROR
下面的示例用 @@ERROR 和 @@ROWCOUNT 验证一条 UPDATE 语句的操作。为任何可能出现的错误而检验 @@ERROR 的值,而用 @@ROWCOUNT 保证更新已成功应用于表中的某行。

USE pubs
GO
CREATE PROCEDURE change_publisher
@title_id tid,
@new_pub_id char(4)
AS

-- Declare variables used in error checking.
DECLARE @error_var int, @rowcount_var int

-- Execute the UPDATE statement.
UPDATE titles SET pub_id = @new_pub_id
WHERE title_id = @title_id

-- Save the @@ERROR and @@ROWCOUNT values in local
-- variables before they are cleared.
SELECT @error_var = @@ERROR, @rowcount_var = @@ROWCOUNT

-- Check for errors. If an invalid @new_pub_id was specified
-- the UPDATE statement returns a foreign-key violation error #547.
IF @error_var <> 0
BEGIN
IF @error_var = 547
BEGIN
PRINT "ERROR: Invalid ID specified for new publisher"
RETURN(1)
END
ELSE
BEGIN
PRINT "ERROR: Unhandled error occurred"
RETURN(2)
END
END

-- Check the rowcount. @rowcount_var is set to 0
-- if an invalid @title_id was specified.
IF @rowcount_var = 0
BEGIN
PRINT "Warning: The title_id specified is not valid"
RETURN(1)
END
ELSE
BEGIN
PRINT "The book has been updated with the new publisher"
RETURN(0)
END
GO

Ⅵ navicat存储过程怎么判断是否正确

一定要手动添加长度。
这是因为存储过程的参数是要设定长度的。而以向导的方式添加参数是没有设定长度的,所以才会报错。
为了方便,接下来均使用SQL语句的方式创建存储过程。此外,文章中用到的数据表会在文末给出。创建存储过程的语法。创建一个存储过程。调用存储过程。

Ⅶ 在SQl中的存储过程如何使用判断语句

if 条件
begin
语句
end
else
begin
end

Ⅷ oracle 存储过程中有关判断语句怎么写

begin
select 字段 into 变量 from 表名 where 条件;
exception
when no_data_found then
--提示表中没有数据
end;

Ⅸ sql存储过程怎么判断语句是否成功

begin try
--SQL (本来的存储过程语句)
end try
begin catch
--SQL (处理出错动作,一般可以插入Error表或者发报错邮件)
end catch

Ⅹ oracle存储过程怎么判断一条sql语句是否成功

oracle存储过程判断一条sql语句是否成功的方法是增加exception处理,如果没有抛出exception,那就证明正常执行了。

在Oracle中,异常分为以下两类:

Oracle预定义异常

用户自定义异常

在Oracle中预定义的异常如下表所示:

在Oracle中有以下三种方式触发异常:

  • 由Oracle自动触发异常

  • 使用RAISE语句手工触发

  • 调用存储过程RAISE_APPLICATION_ERROR手工触发

代码将演示Oracle自动触发异常:

-- Created on 2015-7-14 by JellyThink
declare
iA NUMBER(2) := 10;
begin
iA := iA / 0; -- Oracle自动触发异常
dbms_output.put_line(iA);
exception
when ZERO_DIVIDE then
dbms_output.put_line('Error Code:' || SQLCODE || ' ' || SQLERRM);
when others then
dbms_output.put_line('Others Exception');
end;

热点内容
赛尔编程 发布:2024-10-08 22:30:12 浏览:161
威驰车有哪些配置 发布:2024-10-08 22:19:32 浏览:564
手游源码全套 发布:2024-10-08 21:39:41 浏览:474
大众账号密码是多少 发布:2024-10-08 21:22:18 浏览:890
价格厚道香港多ip服务器 发布:2024-10-08 21:22:16 浏览:283
android适配values 发布:2024-10-08 21:18:36 浏览:240
数控折弯机如何编程 发布:2024-10-08 20:34:40 浏览:62
pod内部修改配置如何生效 发布:2024-10-08 20:25:33 浏览:238
重庆服务器托管市场低价云主机 发布:2024-10-08 20:23:39 浏览:365
运维接触源码 发布:2024-10-08 19:55:44 浏览:486