2010-12-29 5 views
2

Ich versuche, eine Sybase gespeicherte Prozedur zu erstellen, die auf eine temporäre Tabelle verweist, aber ich kenne die Definition dieser temporären Tabelle nicht. Ich könnte mir die Prozedur anschauen und herausfinden, wie die temporäre Tabelle aussieht und sie manuell erstellen, aber ich bin mit ungefähr 1000 Prozeduren konfrontiert (die auf alle Arten von temporären Tabellen verweisen) und diese Lösung wäre extrem mühsam.Sybase gespeicherte Procs, die temporäre Tabellen verwenden. Erstellungsproblem

Ich habe nach einem strategischeren Ansatz gesucht, aber bisher kein Glück. Ich würde es begrüßen, wenn Sie Ihre Gedanken mit mir teilen könnten.

Antwort

3

Es scheint, Sie nicht verstehen kann, dass der ganze Sinn eines #table ist, dass:

  1. es nur vorübergehend ist

  2. es existiert nur im Zusammenhang mit dem gespeicherten proc, die es erstellt

  3. es ist privat

Therefo Das Erstellen eines neuen gespeicherten Proc, um die # Tabelle eines anderen Procs zu "referenzieren", ist keine vernünftige Sache zu versuchen. Entweder schreiben Sie eine vollständig unabhängige gespeicherte proc mit eigenen #table, oder ändern Sie die ursprüngliche gespeicherte proc, so dass die temporäre Tabelle existiert außerhalb seines Kontextes (siehe unten).

Sie müssen durch die Rahmen und verschiedene Rahmen für verschiedene Versionen von Sybase springen, um entweder die Definition oder die Daten in solchen #Tabellen zu erhalten.

  • Wenn Sie den Moment fangen kann, wenn einer dieser gespeicherten Procs ausgeführt wird, und Sie haben sa Privileg, können Sie sicherlich die DDL über SybaseCentral oder anderen DBA-Tool prüfen.

Wenn Sie eine Dokumentationsübung durchführen, gibt es keine Alternative zur Untersuchung des SPROC-Codes. Wenn Sie dies nicht tun, werden Sie wichtige Aspekte der # Tabelle übersehen, die im Code verborgen ist.

Für temporäre Tabellen, die gemeinsam genutzt werden soll (. Dh existieren außerhalb des Kontexts einer gespeicherten proc), statt:
CREATE TABLE #my_table ...
Verwendung:
CREATE TABLE tempdb..my_table ... und auszuführen, dass außerhalb jede proc , bevor die Procs kompiliert werden.

0

Ich denke, Sie könnten #table Metadaten aus Tempdb systables und syscolumns Tabellen erhalten.

Schauen Sie sich Rob Verschoor Artikel über # Tabellenname und tempdb Dump Load Trick.

Verwandte Themen