【问题标题】:sql insert procedure isnt workingsql插入过程不起作用
【发布时间】:2017-12-19 22:33:17
【问题描述】:
CREATE PROCEDURE band
@band_id NUMBER(8,2)  = NULL,
@band_name VARCHAR(15)  = NULL ,
@band_size NUMBER (8,2)  = NULL ,
@band_genre VARCHAR(15) = NULL ,
@number_of_songs NUMBER (8,2)  = NULL,

@average_song_time VARCHAR(15) = NULL ,
@festival_id NUMBER(8,2)  = NULL,
@stage_id NUMBER(8,2)  = NULL 


AS

BEGIN

INSERT INTO band
(band_id,

band_name,

band_size,

band_genre,

number_of_songs,

average_song_time)

VALUES (@band_id,
    @band_name,
    @band_size,
    @band_genre,
    @number_of_songs,
    @average_song_time)

END

sql 插入过程不工作“成功,但编译错误”

想要实现一个允许用户将自己的数据插入到应用程序构建器表单页面上的“带”表中的过程

【问题讨论】:

  • 你必须在你的问题中包含你的代码:缩进四个空格来组成一个代码块。
  • 到底出了什么问题? “不起作用”可能意味着任何事情。
  • 我没有发现代码中有任何错误。该错误消息似乎根本与数据库无关,因此该错误很可能在其他地方。检查整个错误消息以了解它来自何处的任何线索。
  • 感谢您的回复,请检查一下

标签: sql sql-server stored-procedures


【解决方案1】:
  1. MSDN documentation 中所述,您无法将存储过程命名为与该架构中已存在的对象相同的名称。

过程名称必须符合标识符规则,并且在架构中必须是唯一的。

  1. 如果您将datatype NUMBER 更改为 NUMERIC,则此存储过程将起作用,但是根据您的设计要求,您可能希望探索其他数字数据类型。

    CREATE PROCEDURE [dbo].[p_band]
    
    @band_id numeric(8,2) = NULL,
    @band_name VARCHAR(15) = NULL,
    @band_size numeric (8,2) = NULL,
    @band_genre VARCHAR(15) = NULL,
    @number_of_songs numeric(8,2) = NULL,
    @average_song_time VARCHAR(15) = NULL ,
    @festival_id numeric(8,2) = NULL,
    @stage_id numeric(8,2) = NULL 
    
    AS
    
    BEGIN
    
    INSERT INTO band
    (
     band_id,
     band_name,
     band_size,
     band_genre,
     number_of_songs,
     average_song_time
     )
    
    VALUES 
    (
     @band_id,
     @band_name,
     @band_size,
     @band_genre,
     @number_of_songs,
     @average_song_time
     )
    
    END  
    

【讨论】:

    【解决方案2】:

    首先更改您的 Proc 名称

     CREATE PROCEDURE Insertband
     @band_id NUMBER(8,2)  = NULL,
     @band_name VARCHAR(15)  = NULL ,
     @band_size NUMBER (8,2)  = NULL ,
     @band_genre VARCHAR(15) = NULL ,
     @number_of_songs NUMBER (8,2)  = NULL,
    
    @average_song_time VARCHAR(15) = NULL ,
     @festival_id NUMBER(8,2)  = NULL,
    @stage_id NUMBER(8,2)  = NULL 
    AS
    
    BEGIN
    
    INSERT INTO band
    (band_id,
    
    band_name,
    
    band_size,
    
    band_genre,
    
    number_of_songs,
    
     average_song_time)
    
    VALUES (@band_id,
    @band_name,
    @band_size,
    @band_genre,
    @number_of_songs,
    @average_song_time)
    
    END
    

    这会起作用

    【讨论】:

    • 最好解释一下为什么这种改变会有帮助。
    • 此建议不会改进代码,也不会修复任何已知问题。 -1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多