WIN NTのSQL Server 6.5を使っているのですが
ストアドプロシージャの中からDOSのコマンドを
実行する事はできるのでしょうか、もしできるのであれば
やり方を教えてください。

ストアドプロシージャの中からDOS バッチを起動する
方法でもかまいません。

お願いします。

A 回答 (1件)

拡張ストアドプロシージャ[xp_cmdshell]を


お作りになったストアドプロシージャの中から
呼んでやるという方法はいかがでしょう?

以前、SQL Server 6.0ででしたが、ストアド
プロシージャからbcpを実行した経験があります。

詳細についてはBooksOnLineで。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aと関連する良く見られている質問

QSQL-Server 6.5でストアドプロシージャの実行

EXECUTE procedure 'para1','para2'
で正しい結果が返ってくるストプロがあります。
これをSELECT文の中で結果を返すようにするには
どんな書き方をすれば良いのでしょうか?
ストアドプロシージャを作成したのは今回が初めてで
試行錯誤しながらなんとか結果が返せるようになった
のですが、私がISQLで試した方法ではうまく行きません。

<私の試した方法>
SELECT procedure(tabe1.para1,tabe1.para2)
FROM table1

SELECT文でストプロを実行することはできないのでしょうか?
宜しくお願いします。

Aベストアンサー

このプロシージャはテーブルの項目名を返すのでしょうか?
だとしてもこういった使い方は出来なかったと思います。

もし、そのプロシージャが結果として表(Select結果)を返すのであれば
プロシージャ内でビューを作成し、
そのビューに対して再度Selectを発行すれば良いと思います。

QSQL ServerのストアドでUPDATEを実行すると・・・

SQL Serverのストアド中でUPDATEを実行すると
OUTパラメータの値が取得できなくなってしまいます。

何か制約などあるのでしょうか?
わかる方よろしくお願いします。

1.UPDATE文をコメントアウトすると取得できます。
2.UPDATEは正常に実行されています。

/**参考ソース**/
/**
下記プログラムは、引数で取得した文字列に
連番テーブルの値をインクリメントした値と
結合しOUTパラメータに、連番テーブルには、
インクリメント結果をセットしています。
**/

CREATE procedure xml_get_document_seq
@inDate varchar(14),
@outSeq varchar(18) output
as
begin
declare@Workvarchar(4)
declare@Seqvarchar(18)
declare@Numberdecimal(5)
declare@SeqDocvarchar(18)

if not exists(SELECT SEQ
FROM XML_DOCUMENT_SEQ) begin
INSERT INTO XML_DOCUMENT_SEQ(SEQ)
VALUES(0)
end

set @Seq= ISNULL(@inDate,'')

SELECT @Number = SEQ
FROM XML_DOCUMENT_SEQ

set @Number = @Number + 1
if @Number > 9999 begin
 set @Number = 1
end

set @Work= ISNULL(convert(varchar,@Number),'')
set @SeqDoc= @Seq
+ replicate('0', 4 - datalength(@Work))
+ @Work

UPDATE XML_DOCUMENT_SEQ
SET SEQ = @Number

Set @outSeq = @SeqDoc

return @Number
end
GO

SQL Serverのストアド中でUPDATEを実行すると
OUTパラメータの値が取得できなくなってしまいます。

何か制約などあるのでしょうか?
わかる方よろしくお願いします。

1.UPDATE文をコメントアウトすると取得できます。
2.UPDATEは正常に実行されています。

/**参考ソース**/
/**
下記プログラムは、引数で取得した文字列に
連番テーブルの値をインクリメントした値と
結合しOUTパラメータに、連番テーブルには、
インクリメント結果をセットしています。
**/

CREATE procedure xml_get_docume...続きを読む

Aベストアンサー

提示いただいているソースで現象が発生するのでしょうか?

私も過去に同様の現象に見舞われた記憶があります。
そのときはUPDATEに不正があるのではなくて、
それまでの処理で不正があったことが原因だったような・・

プロシージャの実行はどうやってやられているのでしょうか?
クエリアナライザでプロシージャを呼び出してみたら
なにかしらのエラーが結果として表示されるかも・・

QSQL(DOS)コマンドで他サーバーの共有ファイルが見れない

初めまして。

本題ですが、SQLのジョブでDBサーバから他サーバーのバッチを呼んでますが、共有ファイルを参照できなくて困ってます。共有ファイルはadmini権限です。
何方かお助け下さい。

環境は、
DBサーバー:[WIN2KSEVER(admini権限/パスワード共通)]
[SQLserver2000(ローカルインストール、混合モード、ドメイン構成なし)
他サーバー:[WIN2KSERVER(admini権限/パスワード共通)]

Aベストアンサー

DBサーバーにインストールしたSQLServer2000のサービスアカウントが
「ローカルアカウント」という前提で話をすすめます。

以下の手順で確認をしてみてください。
1.DBサーバーにAdministratorでログインして、共有ファイルの中身を見れるか?
 →パスワードを要求されるようであれば、Administratorのパスワードをそろえてください。そうすればパスワードを要求されることはないと思います。

2.DBサーバーにAdministratorでログインして、SQLServerのジョブで実行しているコマンドを、コマンドプロンプトから実行して、実行できるか?
 →実行できなければ、手順1を再度確認

3.ジョブを実行して実行できるか?

これで解消できるか確信は持てませんがご参考まで。

QPostgreSQLでストアドプロシージャ

みなさん、こんにちわ

現在、Microsoft SQLServer7.0を運用しておりますが、一部のDBをPostgreSQLに移行することを検討しております。
そのなかで、SQLServerにあるストアドプロシージャの機能、またはそれに代替する機能があるのかどうか、ご存知の方がありましたらお教えいただけませんか?

とりあえずWindows版の入手からインストール、起動までは何とかできたのですが、あちらこちらのサイトを見ても、上記の事に関する情報がどうしても入手できませんでした。

よろしくお願い致します。

Aベストアンサー

こんにちは。

PostgreSQLですと、「PL/pgSQL」という名称のものでストアドプロシージャと同様のことが出来ると思います。

Qストアドプロシージャ

以下のような事が行いたいのですが、うまくいきません。

 <テーブル1>
  id  計算式
   1  注文数×単価
   2  在庫数×単価

 <テーブル2>
   No. 注文数 在庫数 単価
   A   50   20  500
   B   70   85  860

ここで、テーブル1より計算式を検索し、
その計算式をもとにテーブル2のデータを計算したいのです。

ストアドプロシージャ等を使用すれば出来るのかとおもったのですが、
どうしてもうまくいきません。
このようなことはできないのでしょうか?

開発環境
 ORACLE 8.1.7

Aベストアンサー

動的SQLを使えば可能だと思いますよ。
選択した計算式の列名と演算子を使って、SQL文を動的に生成して実行すればいいと思います。
動的SQLの使用方法は、Oracleのマニュアルや市販のPL/SQLの解説書等を参考にしてください。


人気Q&Aランキング

おすすめ情報