存储过程问题
@cPdno VARCHAR(20),
@cReturn varchar(100) OUTPUT
AS
SET NOCOUNT ON
if @cPdno=''
return
declare @cZgbm varchar(10),
@dtPdrq datetime,
@numRow numeric(10,0)
--判断盘点单是否存在
SELECT TOP 1 @cZgbm = zgbm, @dtPdrq=pdrq FROM PDDA_ZG WHERE PDNO=@cPdno
IF IsNull(@cZgbm,'')=''
begin
SET @cReturn='盘点单不存在'
return
end
SELECT TOP 1 @cZgbm =zgbm FROM PDDA_ZG WHERE pdrq>=@dtPdrq and zgbm=@cZgbm and flag='1' and pdno<>@cPdno
--IF IsNull(@cPdno,'')=''
if @@rowcount<>0
begin
SET @cReturn='在本次反审核的盘点单日期之后存在已审核的盘点单'
return
end
--开始反审核
begin tran
begin
update pdda_zg set flag='0' where pdno=@cPdno and flag='1' --A
update jbzgk set pdrq=(select MAX(pdrq) from pdda_zg where zgbm=@cZgbm and flag='1' ) where item=@cZgbm --B
if @@rowcount<>0
begin
SET @cReturn='盘点单反审核成功!' --这里虽然提示了,但是没走A,B这两条语句
ROLLBACK TRAN
return
end
if @@rowcount=0
begin
set @cReturn='盘点单已反审核过了!'
ROLLBACK TRAN
return
end
if @@error<>0
begin
SET @cReturn='反审核失败,意外错误'
ROLLBACK TRAN
return
end
end
--重新计算库存
execute p_jisuan_sales @cZgbm
commit tran
GO
大家帮忙看下 ! 那里不清楚我再补充
相关推荐
oracle存储过程编译错误问题
NULL 博文链接:https://forlab.iteye.com/blog/1821751
解决存储过程被锁无法编译的问题
解决存储过程被锁无法编译的问题解决存储过程被锁无法编译的问题解决存储过程被锁无法编译的问题解决存储过程被锁无法编译的问题
mysql 存储过程的问题
一开始用phpMyAdmin来执行,后来出现一堆错误,后来去掉了begin,end之后可以正常执行,但要执行存储过程,在phpMyAdmn中不行,而在mysql命令行文本框中就可以。 接下来又遇到更难的问题,在存储过程中加入预处理语句,更不行了,在mysql命令行文本框下执行同样,下面的运行记录,给大家参考,能否有高手来帮助。 代码如下:mysql> CREATE PROCEDURE catalog_get_products_in_category( -> IN inCategoryId INT, IN inShortProductDescriptionLength INT, -> IN i
mysql多次调用存储过程的问题
问题是这样的,在直接使用mysql c api构建应用的时候,一个连接只能执行一次存储过程,不管怎样free再次利用这个连接的时候就会出现不能执行qurry的提示,我想,这么大型的软件 不会存在这样的基础性问题吧,毕竟大多数的adodb都是基于c api的,难道所有的软件都无法进行连接缓存? 别说,接触到这类问题的人还真不多,大多数的连接池都写好了,谁会去直接构建连接进行操作呢,所以baidu google基本都没有结果,今天回头来解决这个问题,突然就有了突破,找到了一篇文章《对Mysql的C API调用存储过程的问题及解决方法分析》,正是我的问题。 作者分析的挺复杂了,其实我们一般只用mys
mysql中存储过程、函数的一些问题
最近写一些mysql的存储过程和函数,发现网上比较有价值的文档很少,大都是照着手册上抄来的,有些实际问题解决不了,比如用变量作表名。 经过反复调试,总算找到解决办法,一下是一些简单的记录,比较零碎。部分内容转自http://my.opera.com/Dereky/blog/show.dml/322997 1.用变量做表名: 简单的用set或者declare语句定义变量,然后直接作为sql的表名是不行的,mysql会把变量名当作表名。在其他的sql数据库中也是如此,mssql的解决方法是将整条sql语句作为变量,其中穿插变量作为表名,然后用sp_executesql调用该语句。 这在mysql5


