ALTER PROCEDURE [dbo].[GetCustomers_PagerSelected]
@PageIndex INT,
@PageSize INT = 10,
@SubCondition nvarchar(max),
@RecordCount INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SELECT
ROW_NUMBER() OVER (ORDER BY [Plan_Id] ASC) AS RowNumber,
[Plan_Id], [User_Id], [Plan_Name],
[ImageCount], [PlanPrice],
'../User/HomePlanImage/' + CONVERT(varchar(5), User_Id) +'/' + CONVERT(varchar(5), Plan_Id) + '/' + CONVERT(varchar(5),1) +'.jpg' AS PlanImagePath
INTO
#Results
FROM
[mf_BuildingPlanDetails]
WHERE
IsActive = 1 @SubCondition
SELECT
@RecordCount = COUNT(*)
FROM
#Results
SELECT *
FROM #Results
WHERE
RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1
DROP TABLE #Results
-2
A
答えて
0
このような何かはおそらく、あなたが欲しいものを行う必要があります。
ALTER PROCEDURE [dbo].[GetCustomers_PagerSelected]
@PageIndex INT,
@PageSize INT = 10,
@SubCondition nvarchar(max),
@RecordCount INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Sql varchar(max)
CREATE TABLE #Results
(
RowNumber int,
Plan_Id int, -- Guessing the column data type, change if needed
User_Id int, -- Guessing the column data type, change if needed
Plan_Name varchar(200), -- Guessing the column data type and lengthe, change if needed
ImageCount int, -- Guessing the column data type, change if needed
PlanPrice money, -- Guessing the column data type, change if needed
PlanImagePath varchar(300), -- Guessing the column data type and lengthe, change if needed
)
SET @Sql = '
SELECT
ROW_NUMBER() OVER (ORDER BY [Plan_Id] ASC) AS RowNumber,
[Plan_Id],
[User_Id],
[Plan_Name],
[ImageCount],
[PlanPrice],
''../User/HomePlanImage/'' + CONVERT(varchar(5), User_Id) +
''/'' + CONVERT(varchar(5), Plan_Id) +
''/'' + CONVERT(varchar(5),1) +
''.jpg'' AS PlanImagePath
FROM
[mf_BuildingPlanDetails]
WHERE
IsActive = 1 ' + @SubCondition
INSERT INTO #Results
EXEC sp_executeSql @Sql
SELECT
@RecordCount = COUNT(*)
FROM
#Results
SELECT *
FROM #Results
WHERE
RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1
DROP TABLE #Results
END
しかし、クエリを使用すると、これがあるように注意してくださいセキュリティの危険SQL injectionの攻撃に対して脆弱です。 私は強く別の方法をお勧めしますが、十分な情報がないため、アドバイスできません。
+0
動作しなくなるまで –
+0
"うまくいかない" - どう?間違いはありますか?期待どおりの結果が得られますか? –
+0
訂正をした後に感謝@Zohar_Peled –
関連する問題
- 1. where句でパラメータを渡す方法は?
- 2. ストアドプロシージャの動的where句の記述
- 3. EFストアドプロシージャにパラメータを渡す方法は?
- 4. 動的SQLのwhere句に文字列変数を渡す方法
- 5. ストアドプロシージャに渡される動的パラメータ
- 6. where句にリストを渡す
- 7. TSQL、動的Where句
- 8. このメソッドに正しいパラメータを渡す方法.net EF4、テーブル名、where句
- 9. where節をSQL Serverストアドプロシージャに渡す方法は?
- 10. SSISパッケージを使用してWHERE句に50000+パラメータを渡す
- 11. ストアドプロシージャのWHERE句の文字列を渡す
- 12. 入力パラメータに従ってwhere句を動的に変更します。
- 13. doctrines querybuilderのwhere句内に整数変数を渡す方法
- 14. ストアドプロシージャのWHERE句でデータ型を使用する方法
- 15. oracleで動的where句を作成する方法
- 16. オブジェクトにパラメータを動的に渡す方法は?
- 17. execストアドプロシージャのパラメータを渡す方法
- 18. ストアドプロシージャの句にカンマ区切りの値を渡す方法
- 19. ORACLEの動的where句
- 20. SqlDataSourceの動的WHERE句
- 21. 動的カーソルとWHERE句Teradata
- 22. where句の動的ラムダ式
- 23. LINQの動的WHERE句
- 24. C#動的Linq Where句
- 25. 動的WHERE句とSQLインジェクション
- 26. dapperの動的where句
- 27. Where句の動的値
- 28. 動的LINQ - 動的、サーバー側Where句
- 29. SQLストアドプロシージャ、where句を適用する
- 30. 動的MySQLストアドプロシージャの句
このようなことを実行する唯一の方法は、動的SQLを使用することです。あなたが何らかの背景を提供して目標をより良く説明できるなら、おそらく誰かがあなたの目標を達成するためのよりよい方法を示すことができます。 –
上記のコード –
のwhere句に@SubConditionパラメータを渡したいと思います。これはコードを読むことから明らかです。しかし、私が書いたように、これは動的SQLを使用している場合にのみ実行でき、問題の世界への扉を開きます。これは、@ SubConditionで許可したい値のような、より多くの背景を含めるように質問を編集することを提案する理由です。 –