sql插入过程不起作用

Posted

技术标签:

【中文标题】sql插入过程不起作用【英文标题】:sql insert procedure isnt working 【发布时间】: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 插入过程不工作“成功,但编译错误”

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

【问题讨论】:

你必须在你的问题中包含你的代码:缩进四个空格来组成一个代码块。 到底出了什么问题? “不起作用”可能意味着任何事情。 我没有发现代码中有任何错误。该错误消息似乎根本与数据库无关,因此该错误很可能在其他地方。检查整个错误消息以了解它来自何处的任何线索。 感谢您的回复,请检查一下 【参考方案1】:
    如 MSDN documentation 中所述,您无法将存储过程命名为与该架构中已存在的对象相同的名称。

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

    如果您将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

以上是关于sql插入过程不起作用的主要内容,如果未能解决你的问题,请参考以下文章

SQL更新否则插入不起作用[重复]

带有内部查询的 SQL 插入语句不起作用

插入选择存储过程不起作用插入NULL

使用jquery sql插入多行并且php不起作用

插入带有参数MYSQL的存储过程不起作用

将存储过程数据插入临时表不起作用