erstellen Sie die gespeicherte Prozedur mit einem " use " - Anweisung
ich erbte einen ms-sql-server-2008-server-Anwendung und nach dem überprüfen der gespeicherten Prozeduren, bemerkte ich, dass Sie beginnen mit einem USE [ELECS]
Anweisung, ELECS wird der name der Datenbank.
als ich versuchte, neu zu erstellen eine der gespeicherten Prozeduren, was ich bekam, war eine Fehlermeldung, dass eine gespeicherte Prozedur kann eine use-Anweisung.
Msg 154, Ebene 15, Status 1, Prozedur TESTME, Zeile 3 VERWENDEN Datenbank
Anweisung ist nicht zulässig in einer Prozedur, Funktion oder trigger.
tut ms sql server-haben eine Besondere Funktion, die dies ermöglicht?
Bitte genau posten, was Sie gesehen haben - wir können nicht erraten, was Sie sah. Sie können löschen Sie die nicht relevanten Teile der gespeicherten Prozedur.
InformationsquelleAutor user571099 | 2012-11-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werden Sie wahrscheinlich sah
USE
über dieCREATE
/ALTER PROCEDURE
- Anweisung.In diesem Fall wurde es verwendet, um festzulegen, welche Datenbank sollte die Prozedur aktualisiert.
Es nicht in einer gespeicherten Prozedur verwendet, aber wenn Sie möchten, um Referenz zu einer anderen Datenbank können Sie die Einstellung in Ihre Tabelle verweisen. Sprich: für eine
SELECT
Aussage:InformationsquelleAutor Curt
Verwenden
Go
vorUSE[databaseName]
- Anweisung. Arbeitete für mich in SQL 2005Beispiel:
InformationsquelleAutor Annie
Gibt es bestimmte "top-level" - Anweisungen, die kommen müssen, zuerst in einem Richtblock. Sie können die Kappe aus/schließen ein Richtblock mit dem Wort
GO
Also:
Wenn du redest
USE
Anweisung innerhalb der sproc, dann Nein, das kannst du nicht tun. Die sproc ist schon Gültigkeitsbereich von der DB in der es erstellt wurde. Wenn Sie Zugriff auf eine andere DB, die Sie verwenden müssen, drei-Teil-Benennung, z.B.ELECS.dbo.tablename
vorausgesetztdbo
ist Ihr schema.InformationsquelleAutor Eli Gassert
Das ist richtig, die USE-Anweisung ist nicht wirklich ein Teil der gespeicherten Prozedur, sondern es ist eigener Aussage, weist das tool (z.B. Enterprise Manager oder Query Analyzer) die Datenbank zu nutzen. Es wird nie senden der sql-server selbst und hat keine Bedeutung für Sie...
EXEC ('USE tempdb;SELECT * FROM sys.objects' )
ist es auch aufgeführt als TSQL-keyword. Vielleicht waren Sie denkenGO
Pflege zu erarbeiten?
Sie könnten genauso gut schreiben
EXEC ('USE tempdb;SELECT * FROM [OtherDBName].sys.objects' )
. Alle die Use-Anweisung teilt dem client-tool, welche Datenbank zu verwenden ist, wenn keine Datenbank explizit in der sql-Anweisung. Alle Objekte in SQL haben 4 mögliche Teile auf Ihren voll qualifizierten Namen, und wenn du weglassen, der Anfang diejenigen, die client-tools füllen Sie die fehlenden mit dem, was der Standard ist...Ich muss denken GEHEN...
InformationsquelleAutor Zdravko Danev