0

このエラーが発生しましたメッセージ102、レベル15、状態1、プロシージャCostTest_02、43行目';'の近くの構文が正しくありません。

「GO」に赤で下線が引かれているので、しばらくの間エラーを探していましたが、見つかりません。私はカーソルの経験があまりありません(これは私が書いた最初のものです)誰かがそれや他のエラーを見つけることができれば私は非常に感謝します

http://imgur.com/9k40O <-----画像がより鮮明になりました(推奨)

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE CostTest_02
AS
BEGIN

DECLARE @Issue_id int;
DECLARE @Master_id int;
DECLARE @Issue_table varchar(255);
DECLARE @price real;
DECLARE @rowcount bigint;


DECLARE cost_cursor cursor FOR
SELECT [Issue Id], [Master Id], [Issue Table], [Price]
from Adhoc_datafix..[Issue Table]
FOR UPDATE OF ADHOC_DATAFIX..[Issue Cost];

OPEN cost_cursor;
FETCH NEXT FROM cost_cursor into @Issue_ID, @Master_id, @Issue_table, @Price

WHILE @@FETCH_STATUS = 0
BEGIN

Select count(*) from @Issue_Table
set @Rowcount = @@rowcount

UPDATE ADHOC_DATAFIX..[Issue Cost]
set  [Issue Id] = @Issue_ID ,
[Master Issue Id] = @Master_ID ,
[Row Count] = (Select count(*) from @Issue_Table), --@Rowcount,
[Cost] = CAST(@Rowcount * @price as money)

WHERE CURRENT OF cost_cursor;
FETCH NEXT FROM cost_cursor
END

close cost_cursor;

DEALLOCATE cost_cursor;
GO
4

2 に答える 2

1

私の推測ではFETCH NEXT FROM cost_cursor、スクリプトの下部近くの行はである必要がありますFETCH NEXT FROM cost_cursor into @Issue_ID, @Master_id, @Issue_table, @Price

申し訳ありませんが、2番目にこの行を見てください:

Select count(*) from @Issue_Table

@Issue_tableは実際にはテーブルではなく、nvarcharであるため、意味がありません。
実行時に、それは次の場所に転送されます。

Select count(*) from 'Value of issue table field'

簡単に言えば、これは機能しません。テーブルから動的にカウントを取得したい場合は、この独創的な記事をご覧ください

于 2013-01-10T13:29:21.160 に答える
0

ENDストアドプロシージャのステートメントがありません。前に追加するだけですGO

于 2013-01-10T13:31:22.307 に答える