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 Fiddle

于 2013-02-11T00:23:43.743 回答
3

奇怪的事情:

  1. 该参数声明为没有大小的 varchar。
  2. 不能使用引号来封装字符串。您需要使用撇号。
于 2013-02-11T00:23:17.927 回答
0

使用单引号,而不是双引号。这是使用双引号的示例。ExportType = "程序"

于 2013-02-11T00:23:44.727 回答