Использования хранимых процедур, которые используют временные таблицы. Проблема создания
Я пытаюсь создать хранимую процедуру sybase, которая ссылается на временную таблицу, но я не знаю определения этой временной таблицы. Я мог бы посмотреть на proc и выяснить, как выглядит временная таблица, и сначала вручную создать ее, но я столкнулся примерно с 1000 procs (которые ссылаются на все виды временных таблиц), и это решение было бы чрезвычайно утомительным.
Я искал более стратегический подход, но пока безуспешно. Я был бы вам очень признателен, если бы вы поделились своими мыслями. мысли со мной.2 ответа:
Похоже, вы не понимаете, что весь смысл таблицы #состоит в том, что:
Это временно
Он существует только в контексте сохраненного Прока, который его создает
Это личное
Поэтому создание нового сохраненного 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.