この要件は多くの人にとって厄介に思えるかもしれませんが、これは私のプロジェクト要件の1つです。Spにコードを追加し、.Netexeで実行することは可能ですか。ボタンクリックのように、SPが数行のコードを返す1つのSPを呼び出してから、プログラムがコードを実行します。
はいの場合、どのように可能ですか?
フレームワーク1.1を使用しています
この要件は多くの人にとって厄介に思えるかもしれませんが、これは私のプロジェクト要件の1つです。Spにコードを追加し、.Netexeで実行することは可能ですか。ボタンクリックのように、SPが数行のコードを返す1つのSPを呼び出してから、プログラムがコードを実行します。
はいの場合、どのように可能ですか?
フレームワーク1.1を使用しています
「動的c#コード実行」を検索し、Googleは2002年からこのブログを思いついた...これはあなたのために働くかもしれません。
http://www.west-wind.com/presentations/dynamiccode/dynamiccode.htm
この記事では、System.CodeDom.Compilerを参照してアセンブリをオンザフライでコンパイルし、Reflectionを使用してそのコードを実行します。楽しいように聞こえる ;)
編集:DaveLが提案したように: C#コードフラグメントを動的にコンパイルして実行することは可能ですか?
別の可能性:
データベースのようなバイナリデータ型を使用するvarbinary
ことで、アセンブリをバイナリデータとしてテーブルに格納できます。次に、データベースからそのバイナリデータを読み取り、ローカルに保存し、を介してアセンブリをロードしてからAssembly.LoadFrom()
、リフレクションを使用して、使用できる特別なタイプまたはエントリポイントを見つけることができます。
TSQLをテーブルにコンパイルし、後でC#を介してこのTSQLを実行することについて話している場合は、可能です。実行する必要があるのは、TSQLスクリプトファイル(.sql)用の単純なパーサーを作成することです。パーサーはSQLスクリプトを読み取り、各GO
ステートメントでTSQLステートメントを関連するSQL Serverテーブルに追加します(テーブルには2つの列がある場合があります1.実行するデータベース/実行するプロセスの名前。2。クエリ自体。 )。その後、これらのTSQLブロックを実行時に動的に実行できます。
SQL ServerデータテーブルにコンパイルされたC#の実行について話している場合、これは別の球技であり、これを行う簡単な方法を私は知りません(それはまったく可能です)。
これがお役に立てば幸いです。
おそらくDLR(DはDynamicを表す)が必要ですが、残念ながらこれは.NET4.0以降です。
あなたはひどいレガシーコードの地獄にいるように聞こえます。私よりもあなた。
アプリ内で実行する独自のスクリプト言語を作成することもできますが、速度が遅く、理想的ではありません。YACCのようなものはあなたをそこまでの道のりに連れて行くでしょうが、それはでこぼこの乗り物です(誰かがJavaでこの種の振る舞いを試みるのを見たことがあります)。