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

时间:2010-12-29 12:24:34

标签: stored-procedures sybase temp-tables

我正在尝试创建一个引用临时表的sybase存储过程,但我不知道这个临时表的定义。我可以查看proc并找出临时表的样子并首先手动创建它,但是我面临大约1000次触发(引用各种临时表),这个解决方案非常繁琐。

我一直在寻找更具战略性的方法,但到目前为止还没有运气。如果你能和我分享你的想法,我会很感激。

2 个答案:

答案 0 :(得分:3)

看来你可能不明白#table的重点是:

  1. 这是暂时的

  2. 它仅存在于创建它的存储过程的上下文中

  3. 是私人的

  4. 因此,创建一个新的存储过程来“引用”另一个过程的#table,这是不合理的尝试。 要么写一个完全独立的存储过程,用自己的#table,更改原始存储过程,以便临时表存在于其上下文之外(见下文)。

    你必须跳过不同版本的Sybase的箍和不同的箍,以获得#tables中的定义或数据。

    • 如果你可以在执行其中一个存储过程中捕获时刻你有sa权限,你当然可以通过SybaseCentral查看DDL或其他DBA工具。

    如果您正在执行文档练习,那么除了检查sproc代码之外别无选择;如果你不这样做,你将会错过隐藏在代码中的#table的重要方面。

    对于意图要共享的临时表(即存在于存储过程的上下文之外),而不是:
        CREATE TABLE #my_table ...
    用途:
    CREATE TABLE tempdb..my_table ... 并在编译过程之前执行外部任何过程。

答案 1 :(得分:0)

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

请看Rob Verschoor关于#table名称和tempdb转储加载技巧的文章http://www.sypron.nl/temptab.html