- ベストアンサー
ACCESSでストアド
単純にACCESSでストアドプロシージャ(もどきでも可)は使用出来るのでしょうか?SQL文以外にifやdo等制御構文が使用出来るのか否かを知りたいです。更新クエリ、追加クエリ、削除クエリ等に実装可能なのでしょうか?SQL Server、あるいはOracleで構築したアプリの簡易版としてAccessを使用したものに改変したいと思っておりますが、ストアドをそのままAccessに適用するのは無理だとしても、多少の変更で対応出来るのか否か疑問です。よろしくお願いします。
- Vargas
- お礼率85% (174/204)
- その他(データベース)
- 回答数2
- ありがとう数3
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ストアドプロシージャは使用できます。 SQLスタートメントもほぼそのまま使用できます。 VBを使って独自の関数を作成しAccessで使用することができますのでFunctionプロシージャなど使えば大丈夫ではないでしょうか?
その他の回答 (1)
- bin-chan
- ベストアンサー率33% (1403/4213)
疑問は検索エンジンに思いつく限りのキーワードを突っ込んでみる。 Googleに「Oracle oo4o ACCESS ストアド プロシージャ」ってほうり込んだら よさそうなページが見つかります。
お礼
ありがとうございました。
関連するQ&A
- SQL サーバーのストアドをAccessのクエリーに変換
SQL Server 7.0 のストアドプロシージャーをAccess2000のクエリーに 簡単に変換する方法を教えてください。
- ベストアンサー
- その他(データベース)
- Accessからoracleのストアドプロシージャを呼び出したい。
はじめまして。 いきなりですが質問させてください。 Accessからoracleのデータベース内に有るストアドプロシージャを使いたい(ボタンを押したらoracleのプロシージャが起動するイメージ)のですがAccessのVBAからはどのようにすれば使用できるのでしょうか? 色々調べて見たのですがVBからのはよく有るのですがVBAからは見つけられませんでした。 ODBCで繋げて呼び出しが出来たらなと思っています 無理ならば他の方法でも構いません。 よろしくお願いします。 使用環境 Access:2002 oracle:Oracle9i Enterprise Edition Release 9.2.0.1.0
- ベストアンサー
- Oracle
- ストアドプロシージャーとは、選択クエリやアクション
ストアドプロシージャーとは、選択クエリやアクションクエリのことですか? accessを勉強してるのですが、選択クエリ、アクションクエリの意味はわかったのですが ストアドプロシージャーの意味がよくわかりません。 「ストアドプロシージャー」という括りに、 ・選択クエリ ・アクションクエリ があるのでしょうか?
- ベストアンサー
- その他(データベース)
- ストアドプロシージャについて
Access2003とSQL Server2005Expressです。 初歩的な質問で恐縮です。 以下のストアドプロシージャのデータ取得先を、テーブルではなく 別のストアドプロシージャにしたいのですが、 その方法がわかりません。 CREATE PROCEDURE テスト AS SELECT コード, 社名, 住所, 電話 FROM 名簿 ↑ これをテーブルではなく、別のストアドプロシージャを 指定したのですが・・・。 ここをストアドプロシージャ名にするとエラーになります。 どうすればよろしいでしょうか?
- ベストアンサー
- SQL Server
- ストアドプロシージャ関連のおすすめ書籍
SQL SERVER2005 EXPRESS EDITIONとMS ACCESSを使用したデータベース を開発しておりますが、ストアドプロシージャに関する専門書籍があり ましたら是非ご紹介下さい。 宜しくお願い致します。
- 締切済み
- その他(プログラミング・開発)
- ストアドプロシージャで別DBに接続
Oracleのマテリアライズドビューのデータを SQL Server 2008のDBに毎晩取り込む処理を作る必要があり、方法を検討中です。 SQL Serverが稼働しているWindows Server 2003のマシンから、 毎晩タスクで起動させて実行することを考えています。 SQL Serverのストアドプロシージャで実現できないかと考えているのですが、 ストアドプロシージャだけで実現可能でしょうか? Oracleに接続してビューのデータを取得し、それに基づいて、 SQL ServerのDB内のテーブルのデータ追加、更新、削除等を行います。 単純なコピーではなく、データ加工や変換等の処理も行います。 経験がないので、実現可能かというところから教えて下さい。 実現不可能なら、他にどのような選択肢があるか教えていただけると助かります。 よろしくお願いします。
- 締切済み
- SQL Server
- ストアドプロシージャについて
教えてください。 NT4.0上でAccess2000+MSDEで使用しているのです。 ストアドプロシージャでUPDATE文のあとにSELECT文を使い更新したデータを受け取ろうとしているのですが、実行すると「ストアドプロシージャは実行されましたがレコードは返されませんでした。」とメッセージが表示されるだけなのです。UPDATE文を注釈にするとレコードは返されるのでデータはあるのだと思います。 宜しくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- ASPからSQL Server2000のストアドプロシージャーを利用したいのですが。。
ASPからSQL Server2000のストアドプロシージャーを 利用したいのですが、記述の方法どのようにすれば いいのでしょうか? ストアドプロシージャーの結果をレコードセットと して、ASPの中で使用したいのですが。。。
- ベストアンサー
- その他(データベース)
- Accessプロジェクト ストアドプロシージャでのデータ更新
AccessのMDBをADPへ作り変えています。 MDBの更新クエリーの場合、「レコードの更新」欄に更新したい値を記述します。たとえば、ユーザー定義関数を使っている場合は、ユーザー関数名([○○○]) ・・・。 これと同じことを、ADPのストアドプロシージャで行う場合はどのようにすればよいのでしょうか? スツアドプロシージャは「デザイナを使用してストアドプロシージャを作成する」を使って作成しています。ここで、「新しい値」欄に ユーザー関数名(○○○) と記述すると、 ”ADOエラー:"ユーザー関数名"は関数名として認識されません” となります。 初めてADPを使用するのでよくわかりません。 以上、よろしくお願いします。
- ベストアンサー
- SQL Server
- ストアドファンクション⇒プロシージャ呼出し失敗する
参考の通りに、ストアドプロシージャ作成SQL文を発行し、 コマンドライン上からは、以下の通りの結果1となり、 レコードがinsertされます。 <結果1> mysql> call logger('ほげ', 'ホゲ'); Query OK, 1 row affected (0.01 sec) mysql> select * from PROCEDURE_LOG; +--------+--------+---------------------+ | NAME | QUERY | EXECUTE_DATE | +--------+--------+---------------------+ | ほげ | ホゲ | 2014-03-26 10:41:26 | +--------+--------+---------------------+ 1 row in set (0.00 sec) ですが、testというストアドファンクションから呼び出してみましたが、 以下の結果2の通り、失敗します。 <結果2> mysql> select test(); ERROR 1336 (0A000): Dynamic SQL is not allowed in stored function or trigger <test> BEGIN CALL logger('test','1'); RETURN CONCAT('END'); END 現在動作している環境では、どこでエラーが発生したかがわからず、 ロガーの処理をなんとしても実装したいのですが、 いろいろ試してみても、解決できませんでした。 ご教示のほど、よろしくお願いします。 <参考> http://treeapps.hatenablog.com/entry/20120106/p1 <ストアドプロシージャ作成SQL文(logger)> SET NAMES UTF8; delimiter // -- ログ出力 DROP PROCEDURE IF EXISTS logger// CREATE PROCEDURE logger( IN PROCEDURE_NAME TEXT, IN SQL_TEXT TEXT ) BEGIN DECLARE CNT INT; CREATE TABLE IF NOT EXISTS PROCEDURE_LOG ( NAME VARCHAR(64), QUERY TEXT, EXECUTE_DATE TIMESTAMP, KEY IDX1 (NAME, QUERY(64), EXECUTE_DATE) ) ENGINE=MYISAM DEFAULT CHARSET=UTF8; -- 古いログを削除 SELECT COUNT(*) INTO CNT FROM PROCEDURE_LOG; IF CNT >= 1000 THEN DELETE FROM PROCEDURE_LOG LIMIT 1; END IF; -- テーブルにログを記録 SET @sql = CONCAT('INSERT INTO PROCEDURE_LOG VALUES (', QUOTE(PROCEDURE_NAME), ',', QUOTE(SQL_TEXT), ', null)'); PREPARE stmt FROM @sql; EXECUTE stmt; END // delimiter ;
- ベストアンサー
- MySQL
お礼
ありがとうございました。試してみます。