レコードの数をカウントするストアドプロシージャがあります。動的クエリよりもテーブル変数を使用するその他のメソッド
CREATE PROCEDURE spCountAnyTableRows
(@PassedTableName as NVarchar(255))
AS
-- Counts the number of rows from any non-system Table, *SAFELY*
BEGIN
DECLARE @ActualTableName AS NVarchar(255)
SELECT @ActualTableName = QUOTENAME(TABLE_NAME)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = @PassedTableName
DECLARE @sql AS NVARCHAR(MAX)
SELECT @sql = 'SELECT COUNT(*) FROM ' + @ActualTableName + ';'
EXEC(@SQL)
END
は今、私は上記で定義され@sql
で単純なクエリを置き換えるために、より複雑なクエリを使用したい、と私は参加する多くがあるので、私のクエリでテーブルの別名を使用する必要があります。動的クエリでテーブルエイリアスを使用する方法はありません。
私の質問:テーブルエイリアスを使用する方法がある場合、ストアドプロシージャでテーブル変数を使用する他の方法はありますか?
あなたはあまりにも遠くに行く前に...何のためにこれはウェブに直面した場合は、停止して、適切にパラメータにSQLインジェクション&どのように学びますあなたの動的SQL。あなたが書いたとおりに、あなたは座っているアヒルです。 –
いいえ、内部のみで使用してください。簡単にするため、0のセキュリティ要件を想定しましょう。 –
そう...コード化するのは簡単にできるはずです。問題は、実際にそれを使用することをどのように計画しているかです。選択リストを使用できるようにする、またはスキーマの信頼できる部分を暗記するようなインターフェースを設定していますか?いずれの場合も、INFORMATION_SCHEMAビューを忘れてしまいます。データベース、スキーマ、表から表への取得を容易にするIDを公開するsys.scemaビューが必要です。 –