2
ストアドプロシージャ内にSQLクエリがあり、エラーが発生します。ここでC#およびSQL Server:ストアドプロシージャを実行
はクエリです:
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[fPartnersDebt]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[fPartnersDebt]
/****** Object: UserDefinedFunction [dbo].[fPartnersDebt] Script Date: 03/07/2012 16:02:01 ******/
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
exec('CREATE PROCEDURE [dbo].[fPartnersDebt]')
(
@StartDate datetime
,@EndDate datetime
,@CompanyName nvarchar(100)
,@Account nvarchar(100)
,@Reference nvarchar(max)
,@ShowClosedDocuments bit
)
RETURNS TABLE
AS
RETURN
(SELECT
t1.Name, t1.Bulstat, t1.Amount, t1.IsVat
FROM
(SELECT
c.CompanyID, c.Name AS [Name], c.IsVat, c.Bulstat AS [Bulstat],
SUM((ad.Amount + ad.RefAmount) * ad.[Sign]) AS [Amount]
FROM
Companies c
JOIN
AccountingDetails ad
JOIN
Accounts a
JOIN
AccountCategories ac ON ac.AccountCategoryID = a.AccountCategoryID
ON ad.AccountID = a.AccountID
JOIN
Accountings acc ON ad.AccountingID = acc.AccountingID
ON ad.CompanyID = c.CompanyID
LEFT JOIN
[References] r ON acc.OptionalReferenceID = r.ReferenceID
WHERE
ac.TypeIdentifier IN (4, 6, 7, 8, 9, 20, 33, 54, 10, 12, 13, 14, 15, 19, 34, 55)
AND Name LIKE @CompanyName
AND (a.Number = @Account OR a.Number LIKE @Account + '/%' OR (Len(@Account) < 3 AND a.Number LIKE @Account + '%'))
AND acc.AccountingDate >= @StartDate
AND acc.AccountingDate <= @EndDate
AND (ISNULL(r.[Description], '') LIKE @Reference + '%')
GROUP BY
c.CompanyID, c.Name, c.Bulstat, c.IsVat) t1
WHERE
@ShowClosedDocuments = 1 OR t1.Amount <> 0
)
エラー:近く
不適切な構文 '@StartDate'。
スカラー変数 "@CompanyName"を宣言する必要があります。
多くの方法で宣言しようとしますが、何も動作しません。申し訳ありませんが、私は新しく、この問題を解決するのは少し難しいです。
エラー: System.Data.SqlClient.SqlException(0x80131904): 'GO'付近の構文が正しくありません。 'GO'付近の構文が正しくありません。 'CREATE FUNCTION'はクエリバッチの最初の文でなければなりません。 スカラー変数 "@CompanyName"を宣言しなければなりません。 –
@ДимитърГрудевそうなら、 'C#'からそれを実行して、それを1つではなく2つの呼び出しで呼び出します。 – lad2025
はい私はc#で実行します。申し訳ありませんが、私は新しいです。コードで私を見せてもらえますか? –