1

私は SQL を学んでいますが、新しい/別のクエリからストアド プロシージャを呼び出す際に問題が発生しました。

installDB.sqlいくつかのテーブルが作成され、さらにこれらにデータが入力され たファイルを作成しました。

さらに、いくつかの関数を追加するために、ストアド プロシージャも使用します。

例:

CREATE PROCEDURE Add_Book
    @User CHAR(50),
    @Book CHAR(50)
    AS
INSERT INTO Relationtable(book_id, user_id, current_dato) 
    VALUES(
        (SELECT book_id FROM Books WHERE book_title = @Book),
        (SELECT user_id FROM Users WHERE user_name = @User),
         GETDATE()
    )

このクエリ (タブ) ではexec、その手順を (問題なく) 実行 できます。

exec Add_Book myUser, myBook

しかし、新しいクエリ (タブ) でこのコマンドを試しても、うまくいきません。

installDBすべての関数をビルドし、後で別のクエリから呼び出すことができるようにしたいと考えています。

これは可能ですか?

4

1 に答える 1

0

この方法を使用して、製品のデータベースをセットアップおよび維持します。必要なすべてのテーブル、tempdb テーブル、ビュー、関数、ストアド プロシージャなどをインストールする多数の個別の SQL スクリプトがあります。後で、これらのストアド プロシージャを実行するコードを実行すると、プロシージャは通常どおり実行できます。

このインストール スクリプトがトランザクションで実行され、エラーで終了した場合、ROLLBACKまたはエラーが発生した場合、その時点までにインストールされたものはすべて失敗します。同様に、インストール スクリプトが で始まり、BEGIN TRANがないCOMMIT場合、procs はまだ存在しません。

もう 1 つの可能性は、インストール スクリプトが予想とは異なるデータベースまたはサーバーに対して実行されたことです。スクリプトを実行すると、Microsoft SQL Management Studio クエリ ウィンドウでスクリプトを実行できるようになります。

于 2012-10-24T18:28:00.767 に答える