SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GET_ACTS_RULES_LIST_FOR_CLIENTS]
(@ACTS_FOR_CLIENTS)
AS
BEGIN
SET NOCOUNT ON;
SELECT *
FROM DCMREPOSITORYV1..ACTS
WHERE NAME IN (SELECT NAME FROM ACTS_FOR_CLIENTS)
SELECT *
FROM COMPLIANCE_FOR_CLIENTS
WHERE ACTSID IN (SELECT ID
FROM ACTS_FOR_CLIENTS
WHERE NAME IN (SELECT NAME FROM ACTS_FOR_CLIENTS))
ORDER BY COMPLIANCE_CATEGORY_ID, ACTSID
SELECT *
FROM STATE_CENTRAL_RULE_FOR_CLIENTS
WHERE ACTSID IN (SELECT ID
FROM DCMREPOSITORYV1..ACTS
WHERE Name IN (SELECT NAME FROM ACTS_FOR_CLIENTS))
ORDER BY COMPLIANCE_CATEGORY_ID, ACTSID
END
答えて
https://docs.microsoft.com/en-us/sql/t-sql/statements/create-procedure-transact-sql +は型の可変@ACTS_FOR_CLIENTSを追加する必要があります() `tのCREATE PROCEDUREを
USE [TESTING]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GET_ACTS_RULES_LIST_FOR_CLIENTS] @ACTS_FOR_CLIENTS VARCHAR(255)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @SQL VARCHAR(MAX)
SET @SQL = 'SELECT * FROM DCMREPOSITORYV1..ACTS WHERE NAME IN (SELECT NAME FROM '[email protected]_FOR_CLIENTS+')';
SET @SQL = @SQL + 'SELECT * FROM COMPLIANCE_FOR_CLIENTS WHERE ACTSID IN (SELECT ID FROM ' + @ACTS_FOR_CLIENTS +' WHERE NAME IN (select NAME from ' + @ACTS_FOR_CLIENTS + ')) ORDER BY COMPLIANCE_CATEGORY_ID,ACTSID ';
SET @SQL = @SQL + 'SELECT * FROM STATE_CENTRAL_RULE_FOR_CLIENTS WHERE ACTSID IN (SELECT ID FROM DCMREPOSITORYV1..ACTS WHERE Name IN (select NAME from ' + @ACTS_FOR_CLIENTS +')) ORDER BY COMPLIANCE_CATEGORY_ID,ACTSID';
EXEC(@SQL);
BEGINのエラーを示す()を取り除くことによって –
@ACTS_FOR_CLIENTSをタイプしますか? –
この変数の使い方(@ACTS_FOR_CLIENTS)? –
修正してみてください。
CREATE PROCEDURE [dbo].[GET_ACTS_RULES_LIST_FOR_CLIENTS]
@ACTS_FOR_CLIENTS ACTS_FOR_CLIENTS readonly
AS
BEGIN
SET NOCOUNT ON
SELECT * FROM DCMREPOSITORYV1..ACTS WHERE NAME IN (SELECT NAME FROM ACTS_FOR_CLIENTS)
SELECT * FROM COMPLIANCE_FOR_CLIENTS WHERE ACTSID IN (SELECT ID FROM ACTS_FOR_CLIENTS WHERE NAME IN (select NAME from ACTS_FOR_CLIENTS))
ORDER BY COMPLIANCE_CATEGORY_ID,ACTSID
SELECT * FROM STATE_CENTRAL_RULE_FOR_CLIENTS WHERE ACTSID IN (SELECT ID FROM DCMREPOSITORYV1..ACTS WHERE Name IN (select NAME from ACTS_FOR_CLIENTS))
ORDER BY COMPLIANCE_CATEGORY_ID,ACTSID
END
訂正:
を宣言されたユーザー定義のテーブルが無効です@ACTS_FOR_CLIENTS
@ACTS_FOR_CLIENTSはテーブルです。それはプロシージャにテーブルを渡すための正しい構文ですか? –
@CharchitaWashimkarはそれを '@ACTS_FOR_CLIENTS ACTS_FOR_CLIENTS readonly' –
@CharchitaWashimkarで渡します。'ストアドプロシージャのユーザ定義のテーブル型 'について学ぶべきです..... http://www.c-sharpcorner.com/blogs/userdefined-ストアドプロシージャ・コード・イン・コード・イン・コード・ビハインド・ファイルを削減するテーブル・タイプおよびテーブル値のパラメータ・イン・ストア・プロシージャ –
- 1. メッセージ102、レベル15、状態1つの近くに無効な構文「>」
- 2. メッセージ102、レベル15、状態1、行15付近に正しくない構文「)」
- 3. メッセージ102、レベル15、状態1、プロシージャCaseSummary、18行目付近に正しくない構文「終了」
- 4. メッセージ102、レベル15、状態1、プロシージャCaDataGroup_Insert、ライン88付近に正しくない構文 '=' ここで
- 5. メッセージ102、レベル15、状態1、行1近くに不正な構文 'ステップ9:_RMP割り当て現在の月'
- 6. SQL Server:メッセージ102、レベル15、状態1、行2メッセージ '='の近くの構文が正しくありません
- 7. メッセージ102、レベル15、状態1、行1 '<'付近の構文が正しくありません
- 8. メッセージ102、レベル15、状態1、行6 '='付近の構文が正しくありません
- 9. メッセージ102、レベル15、状態1、行9 ' - '付近の構文が正しくありません。
- 10. エラー番号:102、状態:1、クラス:近くに15正しくない構文 ''
- 11. メッセージ156、レベル15、状態1、プロシージャCUSTOMER_IMPORT、行33 "FROM"キーワードの近くの構文が正しくありません
- 12. メッセージレベル102、レベル15、状態1、行18 'の近くの構文が正しくありません。
- 13. メッセージレベル102、レベル15、状態1、行6 '参照'近くの構文が正しくありません
- 14. メッセージ102、レベル15、状態1、行5 'の近くの構文が正しくありません。ステートメントを挿入します。SQL Server
- 15. メッセージ167、レベル16、状態1、行3無効な列名 'CORE'
- 16. のSQLサーバー:メッセージ156、レベル15、状態1、行2:
- 17. エラー156重大度15状態1キーワードの近くに不正な構文IF
- 18. SQL:Msg 156、レベル15、状態1、プロシージャUA_TRIGGER_PAGAMENTO、15行目キーワード 'THEN'の近くの構文が正しくありません
- 19. メッセージ4104、レベル16、状態1、プロシージャcst_priceimporter、行37
- 20. エラーメッセージ - Msg 156、レベル15、状態1、キーワード 'WHERE'の近くの構文が正しくありません
- 21. メッセージ116、レベル16、状態1
- 22. メッセージ4864、レベル16、状態1、行19
- 23. メッセージ5074、レベル16、状態1、行1インデックス 'IX_Alias_Alias' は 'エイリアス' が
- 24. メッセージ13536、レベル16、状態1、行133 [バッチスタートライン7]
- 25. 近くに無効な構文 'a6552'
- 26. 近くに無効な構文「学生」
- 27. 近くに無効な構文 'sys.objects'
- 28. 近くに無効な構文「ケース」
- 29. 無効な構文が近く
- 30. SQLエラー - メッセージ156、レベル15、状態1:構文エラーが見つかりません。以下のコードを参照してください。
ENDがありますが、同じエラーが発生しています。 –
パラメータに型がありません。 –
正しい構文は、テーブルタイプを作成することです。そうでなければ、可変文字列を宣言し、代わりに文字列として使用します。 – plaidDK