Stored procedures 使用临时表的Sybase存储过程。创作问题

Stored procedures 使用临时表的Sybase存储过程。创作问题,stored-procedures,sybase,temp-tables,Stored Procedures,Sybase,Temp Tables,我试图创建一个引用临时表的sybase存储过程,但我不知道该临时表的定义。我可以查看进程,找出临时表的外观,然后首先手动创建它,但我面临大约1000个进程(它们引用各种临时表),这个解决方案将非常乏味 我一直在寻找更具战略性的方法,但到目前为止运气不佳。如果您能与我分享您的想法,我将不胜感激。我认为您可以从tempdb systables和syscolumns表中获取表元数据 请看Rob Verschoor关于#表名和tempdb转储加载技巧的文章。您可能不理解#表的全部要点是: 这是暂时的 它

我试图创建一个引用临时表的sybase存储过程,但我不知道该临时表的定义。我可以查看进程,找出临时表的外观,然后首先手动创建它,但我面临大约1000个进程(它们引用各种临时表),这个解决方案将非常乏味

我一直在寻找更具战略性的方法,但到目前为止运气不佳。如果您能与我分享您的想法,我将不胜感激。

我认为您可以从tempdb systables和syscolumns表中获取表元数据


请看Rob Verschoor关于#表名和tempdb转储加载技巧的文章。

您可能不理解#表的全部要点是:

  • 这是暂时的

  • 它只存在于创建它的存储过程的上下文中

  • 这是私人的

  • 因此,创建一个新的存储进程来“引用”另一个进程的#表并不是一个合理的尝试或者使用自己的#表编写一个完全独立的存储过程,或者更改原始存储过程,使临时表存在于其上下文之外(见下文)

    您必须跳转到不同的环,以及不同版本的Sybase的不同环,才能获得这些表中的定义或数据

    • 如果您能够捕捉到其中一个存储过程正在执行的时刻,并且您拥有
      sa
      权限,那么您当然可以通过SybaseCentral或其他DBA工具检查DDL
    如果您正在执行文档编制练习,那么除了检查存储过程代码之外别无选择;如果不这样做,您将错过隐藏在代码中的#表的重要方面

    对于打算共享的临时表(即存在于存储过程的上下文之外),而不是:
    创建表格#我的表格…

    用法:
    CREATE TABLE tempdb..my_TABLE…
    并在编译进程之前,在任何进程之外执行该进程