zoukankan      html  css  js  c++  java
  • 【数据库】存储过程互相调用时 临时表的命名注意点

    最近写了两个存储过程,它们相互之间会互相调用。在数据库中直接测试运行时都没有问题,在代码中传入参数调用后发现会有报错。

    折腾了一个下午之后,还是组长找出故障原因出来。

    原来互相调用的两个存储过程中,临时表或变量的命名最好得有所区别,否则会调用错误,导致运行出错。

    我简短地写两个存储过程来示范一下,不一定能运行起来,能看懂就行。

    ps_day

    CREATE PROCEDURE [ps_day]
    AS
    BEGIN
        SELECT  col1,col2 
        INTO #Temp
        FROM history
    
        SELECT * FROM #Temp
    
    END
    GO
    

    ps_month

    CREATE PROCEDURE [ps_month]
    AS
    BEGIN
        DECLARE @date datetime,@i int
        SET @date = DATEADD(M,-1, getdate())
        SET @i =  0
        WHILE(@i<30)
        BEGIN
            SELECT col1 ,0 AS col3 
            INTO  #Temp
            EXEC @ps_day
            
            SET @i= @i + 1
        END
    
        SELECT col3
        FROM #Temp
    
    END
    GO    
    

    执行ps_month后,会发现【列名 col2 无效】的错误。

    将ps_day,ps_month的临时表分别改为 #Temp1、#Temp2后,发现该错误消失了。

  • 相关阅读:
    VijosP1274:神秘的咒语
    2009年浙大 :找出直系亲属
    django用户信息扩展
    缓存
    自定义认证
    自定义admin
    权限的配置和使用
    form表单
    过滤器 自定义查询
    中间件
  • 原文地址:https://www.cnblogs.com/nonkicat/p/4624353.html
Copyright © 2011-2022 走看看