3

Web アプリでクエリ エンジンを作成する必要があります。達成する必要があるのは、ユーザーが任意のSELECTステートメントをテキスト ボックスに入力し、結果を新しいテーブルに作成する必要があることです。

これは私が作成した関数ですが、SQL Server 2012 のみをサポートしています。この関数と同様の機能が必要ですが、SQL Server 2005 以降をサポートする必要があります。

CREATE FUNCTION [dbo].[CustomQueryTableCreation]
(
    @TableName varchar(max),
    @sql NVARCHAR(MAX)
)
RETURNS 
  @TableBuilder TABLE
  (
     DS varchar(max)
  )
  BEGIN
  INSERT INTO @TableBuilder
  SELECT 'CREATE TABLE dbo.' + @TableName+'(';

  INSERT INTO @TableBuilder
  SELECT 
   CASE column_ordinal 
     WHEN 1 THEN '' ELSE ',' END 
     + name + ' ' + system_type_name + CASE is_nullable 
     WHEN 0 THEN ' not null' ELSE '' END
  FROM 
  sys.dm_exec_describe_first_result_set
  (
    @sql, NULL, 0
  ) AS f
  ORDER BY
  column_ordinal;

  INSERT INTO @TableBuilder
  SELECT ');';

  RETURN 
END

私が今やりたいことは、クエリを検索して FIRSTFROMをに置き換えたいということですINTO NewTable FROM

クエリには複数の結合を含めることができます。

これを SQL または C# で制御する必要がありますか?

4

3 に答える 3

1

これはよく知られた問題です。文字列の連結は通常、悪い/限定的な解決策です。より推奨される解決策は、他のメカニズムで結果セット (openquery など) を返してから、それをテーブルに挿入することです。

例えば:

SELECT *
INTO YourTable
FROM OPENQUERY([LinkedServer],your query...)
于 2013-07-27T17:20:26.417 に答える