正在加载图片...
第9连接,命令和过程283 Set crmdupdate Nothin 如果有不止一个输出参数,可用相同的方法访问。可以使用参数名或索引号取出集合中 返回值 对函数返回值的处理不同于存储过程返回值的处理,这常常导致混淆。在函数中,经常 是返回一个布尔值来表明函数运行的成功与否。 If Some FunctionName()= True Then 但在调用一个存储过程时,却不能使用同样的方法,因为存储过程是用 Execute方法运行 的,同时返回一个记录集。 如果得不到一个返回值,如何确定是否已正确执行存储过程?当发生错误时,会报告错 误,这样就可使用前一章提供的错误处理代码来处理错误。但对于一些非致命的逻辑错误怎 么办? 例如,考虑向 employee表添加一个新职员的情形。你可能不想防止两个职员同名的情况, 但想注明这个情况。那么,可以使用一个返回值以表明是否已有同名的职员存在。存储过程 如下 CREATE PROCEDURE usp AddEmployee aFName Varchar(20) Char(1) JOb Id SmallInt aJob Lvl TinyInt a pub ID Char (4) CHire Date Datetime BEGIN DECLARE EXists Return value employee with the same name exist IFEX工STs( SELECT FROM Employee 工nit SELECT EExist ELSE SELECT EXists INTO Employee (emp_id, fname, minit, lname @Emp Id, @FName, @MInit, @LName, aJob_ID QJob Lvl, @Pub_ID, aHire_ Date) RETURN@Ex⊥st END 该过程首先检查是否有同名的职员存在,并据此设定相应的变量 Exists,若存在同名,就 设为1,否则为0。然后将该职员加到表中,同时把 Exists的值作为返回值返回。如果有不止一个输出参数,可用相同的方法访问。可以使用参数名或索引号取出集合中 的值。 5. 返回值 对函数返回值的处理不同于存储过程返回值的处理,这常常导致混淆。在函数中,经常 是返回一个布尔值来表明函数运行的成功与否。 但在调用一个存储过程时,却不能使用同样的方法,因为存储过程是用 E x e c u t e方法运行 的,同时返回一个记录集。 如果得不到一个返回值,如何确定是否已正确执行存储过程?当发生错误时,会报告错 误,这样就可使用前一章提供的错误处理代码来处理错误。但对于一些非致命的逻辑错误怎 么办? 例如,考虑向e m p l o y e e表添加一个新职员的情形。你可能不想防止两个职员同名的情况, 但想注明这个情况。那么,可以使用一个返回值以表明是否已有同名的职员存在。存储过程 如下: 该过程首先检查是否有同名的职员存在,并据此设定相应的变量 E x i s t s,若存在同名,就 设为1,否则为0。然后将该职员加到表中,同时把 E x i s t s的值作为返回值返回。 第 9章 连接、命令和过程计计283 下载
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有