none
ストアドプロシージャでビューを作成する方法を教えてください。 RRS feed

  • 質問

  • まことにくだらない質問で申し訳ないですが困り果てています。
    Access adpからビューを作成するストアドプロシージャが作成できません。

    CREATE PROCEDURE "ビュー作成"

    AS
     create view as v_abc
     as
     select * from テーブル名

     RETURN

    と言う内容なのですが、ADOエラー: キーワード'view'付近に不適切な構文があります。

    と怒られてしまいます。

    http://msdn.microsoft.com/ja-jp/library/ms187956.aspx
    ↑などを見ても構文は有っていると思うのですが・・・。

    SQLServer 2008 R2 Express とAccess2010です。
    宜しくお願い致します。

    2011年7月29日 6:49

回答

  • Hoshinaです。
    こんにちは

    プロシージャの中で,Viewを定義したことが無かったので,調べてみました。
    以下のURLに答えがあるように思います。
    http://msdn.microsoft.com/ja-jp/library/ms187926.aspx

    上から1/3位の位置に,「制限事項と制約事項」の項目があります。
    その中で,「Create Procedure」の中で使用できないステートメントを一覧にしてあります。
    その一覧中に,「Create View」がありますので,そもそも使用できないのではないでしょうか?

    それでは

    • 回答としてマーク oeameu3sngp 2011年8月2日 8:42
    2011年7月29日 8:14
  • oeameu3sngpさん

    こんにちは

    以下のようにcreate viewのDDLをいったん変数に格納してから、exec関数で実行するやり方ではだめでしょうか?

    CREATE PROCEDURE "ビュー作成"
    AS
    declare @create_view varchar(256);

    select @create_view =
     'create view v_abc as' + char(13) + char(10) +
     'select * from テーブル名';

    exec(@create_view);

    RETURN;

    • 回答としてマーク oeameu3sngp 2011年8月2日 8:42
    2011年7月29日 8:42

すべての返信

  • Hoshinaです。
    こんにちは

    プロシージャの中で,Viewを定義したことが無かったので,調べてみました。
    以下のURLに答えがあるように思います。
    http://msdn.microsoft.com/ja-jp/library/ms187926.aspx

    上から1/3位の位置に,「制限事項と制約事項」の項目があります。
    その中で,「Create Procedure」の中で使用できないステートメントを一覧にしてあります。
    その一覧中に,「Create View」がありますので,そもそも使用できないのではないでしょうか?

    それでは

    • 回答としてマーク oeameu3sngp 2011年8月2日 8:42
    2011年7月29日 8:14
  • oeameu3sngpさん

    こんにちは

    以下のようにcreate viewのDDLをいったん変数に格納してから、exec関数で実行するやり方ではだめでしょうか?

    CREATE PROCEDURE "ビュー作成"
    AS
    declare @create_view varchar(256);

    select @create_view =
     'create view v_abc as' + char(13) + char(10) +
     'select * from テーブル名';

    exec(@create_view);

    RETURN;

    • 回答としてマーク oeameu3sngp 2011年8月2日 8:42
    2011年7月29日 8:42
  • Hosinaさん、こんにちは。
    返信が遅くなり申し訳ございませんでした。

    ご教授頂いたURLを見ると、確かにストアド内で create view は使えない様ですね。
    このページは全く見ていませんでした。
    今までほとんどAccess2002しか使ったことが無いのでストアドやビュー、権限関係は戸惑うことばかりです。
    また、概念を掴もうにも専門用語に行く手を阻まれ苦戦しております。

    今回は色々とお調べ頂き有難うございました。

    2011年8月1日 8:44
  • tenmantenさん、こんにちは。
    返信が遅くなり申し訳ございませんでした。

    裏ワザ?があるんですねぇ…。目からウロコでした。
    この手法を使えばいろんな事が出来るかも知れませんね。
    非常に参考になりました。有難うございます。

    # ただ、少し考えたのですが、ストレートにストアド内でビューを作成できないと言う事は
    # 普通?はそんな事をしない、あるいはする必要が無いという事かも知れませんね…。
    # Hoshinaさんも定義したこと無いと仰ってますし…。
    # なので、工夫すべきは当方の脳みそなのかも知れません。

    お手数お掛け致しました。

    2011年8月1日 8:46