0

私は実際にはSQLの人間ではないので、苦労しています。"program"このストアドプロシージャの作成を妨げている以下の何が問題になっていますか?ヘルプやクリーンアップの提案は素晴らしいでしょう。

ALTER PROCEDURE [dbo].[CreateHaystackExportJob_Program]
    -- Add the parameters for the stored procedure here
    @ID AS VARCHAR
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    DECLARE @JobCount AS INT

    SELECT 
        @JobCount = COUNT (*) 
    FROM 
        dbo.HaystackExportJobs
    WHERE 
        ID = @ID AND ExportType = "program" 

    IF @JobCount = 0
        INSERT INTO dbo.HaystackExportJobs (ID,ExportType) VALUES (@ID,"program")

END
4

3 に答える 3

5

いくつか、最初にパラメータに長さを含める必要があり@idます。

次に、SQL Serverの文字列値は一重引用符で囲む必要があるため、二重引用符を削除して、を囲む一重引用符に置き換えます"program"。したがって、コードは次のようになります。

CREATE PROCEDURE [dbo].[CreateHaystackExportJob_Program]
    -- Add the parameters for the stored procedure here
    @ID AS VARCHAR(50) -- place a length on this parameter or an int if this is numeric
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    DECLARE @JobCount AS INT

    SELECT 
        @JobCount = COUNT (*) 
    FROM 
        dbo.HaystackExportJobs
    WHERE 
        ID = @ID 
        AND ExportType = 'program' 

    IF @JobCount = 0
        INSERT INTO dbo.HaystackExportJobs (ID,ExportType) 
        VALUES (@ID,'program')

END

SQL FiddlewithDemoを参照してください

于 2013-02-11T00:23:43.743 に答える
3

奇妙なこと:

  1. パラメータはサイズなしでvarcharとして宣言されます。
  2. 文字列をカプセル化するために引用符を使用することはできません。aprostrophesを使用する必要があります。
于 2013-02-11T00:23:17.927 に答える
0

二重引用符ではなく、一重引用符を使用してください。二重引用符を使用する例を次に示します。ExportType = "program"

于 2013-02-11T00:23:44.727 に答える