Использования хранимых процедур, которые используют временные таблицы. Проблема создания


Я пытаюсь создать хранимую процедуру sybase, которая ссылается на временную таблицу, но я не знаю определения этой временной таблицы. Я мог бы посмотреть на proc и выяснить, как выглядит временная таблица, и сначала вручную создать ее, но я столкнулся примерно с 1000 procs (которые ссылаются на все виды временных таблиц), и это решение было бы чрезвычайно утомительным.

Я искал более стратегический подход, но пока безуспешно. Я был бы вам очень признателен, если бы вы поделились своими мыслями. мысли со мной.
2 2

2 ответа:

Похоже, вы не понимаете, что весь смысл таблицы #состоит в том, что:

  1. Это временно

  2. Он существует только в контексте сохраненного Прока, который его создает

  3. Это личное

Поэтому создание нового сохраненного proc для "ссылки" на таблицу #другого proc не является разумной попыткой. либо напишите полностью независимый хранимый proc со своей собственной # таблицей, либо измените оригинал хранимый proc так, чтобы временная таблица существовала вне своего контекста (см. ниже).

Вам придется прыгать через обручи и разные обручи для разных версий Sybase, чтобы получить либо определение, либо данные в таких таблицах#.

  • Если вы можете поймать момент , когда выполняется один из этих хранимых procs, и у вас есть привилегия sa, вы, безусловно, можете изучить DDL с помощью SybaseCentral или другого инструмента DBA.

Если вы выступаете упражнение с документацией, то нет альтернативы изучению кода sproc; если вы этого не сделаете, вы пропустите важные аспекты таблицы#, которая скрыта в коде.

Для временных таблиц, которые предназначены для совместного использования (т. е. существовать вне контекста сохраненного proc), а не:
CREATE TABLE #my_table ...
использование:
CREATE TABLE tempdb..my_table ... и выполнить, что за любой прок, перед компиляцией проков.

Я думаю, что вы могли бы получить метаданные #table из таблиц tempdb systables и syscolumns.

Посмотрите на статью Роба Вершура http://www.sypron.nl/temptab.html о # table name и tempdb dump load trick.