7

ms sql server 2008サーバーアプリケーションを継承し、ストアドプロシージャを確認すると、 ELECSがデータベース名であるUSE [ELECS]ステートメントで始まっていることに気付きました。

ストアドプロシージャの1つを再作成しようとすると、ストアドプロシージャにuseステートメントを含めることができないというエラーが表示されました。

メッセージ154、レベル15、状態1、プロシージャTESTME、行3 USEデータベースステートメントは、プロシージャ、関数、またはトリガーでは許可されていません。

ms sqlサーバーにはこれを可能にする特別な機能がありますか?

4

4 に答える 4

12

/ステートメントUSEの上にある可能性が高いです。CREATEALTER PROCEDURE

その場合、プロシージャを更新する必要があるデータベースを設定するために使用されていました。

ストアド プロシージャ内では使用できませんが、別のデータベースを参照する場合は、テーブル参照でこれを設定できます。すなわち:SELECTステートメントの場合:

SELECT *
FROM [DatabaseName].dbo.[TableName]
于 2012-11-16T15:42:17.133 に答える
3

実行ブロックで最初に来る必要がある特定の「トップレベル」ステートメントがあります。単語で実行ブロックをキャップオフ/クローズできますGO

そう:

USE [db]
GO

CREATE PROC....

sproc 内のステートメントについて話している場合はUSE、いいえ、それはできません。sproc は、それが作成された DB によって既にスコープが設定されています。別の DB にアクセスする場合は、3 部構成の命名を使用する必要があります。たとえば、スキーマELECS.dbo.tablenameを想定します。dbo

于 2012-11-16T15:41:08.430 に答える
1

そうです、USE ステートメントは実際にはストアド プロシージャの一部ではなく、使用するデータベースをツール (つまり、Enterprise Manager または Query Analyzer) に指示する独自のステートメントです。SQLサーバー自体に送信されることはなく、意味がありません...

于 2012-11-16T15:42:56.303 に答える