存储过程代码(我只是删除了其他代码(
ALTER PROCEDURE [dbo].[SP_v2]
@CashCountBatchNo INT,
@CashierID VARCHAR(10),
@Remarks VARCHAR(50),
@CashCount NVARCHAR(1000),
@ADJ NVARCHAR(1000) = '',
@CutOff VARCHAR(8) = ''
AS
SET NOCOUNT ON
DECLARE @tbl TABLE(DENOMINATION MONEY, [COUNT] INT)
DECLARE @tblADJ TABLE(Description VARCHAR(300), Amount MONEY)
DECLARE @Totals TABLE(CC MONEY, CH MONEY, CASHTOCOLLECT MONEY)
SET @CashCount = REPLACE(@CashCount, '_S_', ' Select ')
SET @CashCount = REPLACE(@CashCount, '_;', ' union all ')
SET @CashCount = SUBSTRING(@CashCount, 0, LEN(@CashCount) - 8)
INSERT INTO @tbl(DENOMINATION, [COUNT])
EXEC sp_executesql @CashCount
SELECT * FROM @tbl
RETURN
它刚刚创建成功,现在我的问题...
UERMHIMS..Usp_Cashier_SaveCashCount_v2
'',
'',
'',
'DENOMINATION=1000, COUNT=1 union select DENOMINATION=500, COUNT=1',
'',
''
此时,存储过程需要 4 个参数,当我执行存储过程时,它会抛出错误
Msg 102,级别 15,状态 1,第 1
行 "="附近的语法不正确。
您需要在执行语句之前打印出变量@CashCount
。
从我能看出你的逻辑来看,@CashCount
的内容是这样的:
DENOMINATION=1000, COUNT=1 union select DENOMINATION=500,
这不是有效的 SQL。
作为测试,我在SQL Fiddle中运行此SQL,并得到完全相同的错误。