数据未插入 SQL 服务器 table
Data is not inserted into the SQL Server table
我正在开发一个项目,我在SQL服务器部分遇到了困难,我创建了一个程序,当table[=13=中的值嗡嗡声时,我需要它] 大于 10 他将该行放在另一行 table Bi_alerta
但问题是当我 运行 代码时一切正常,但当我看到它时却没有将任何内容放入 table ...只是不要将任何行添加到 Bi_alerta
table.
SQL 服务器存储过程:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Bi_alertainset]
@alerta_hum varchar(50),
@alerta_temp varchar(50),
@alerta_lpg varchar(50),
@alerta_co varchar(50),
@alerta_fumo varchar(50)
AS
BEGIN
SELECT
@alerta_hum = med_hum,
@alerta_temp = med_temp,
@alerta_lpg = med_lpg,
@alerta_co = med_co,
@alerta_fumo = med_fumo
FROM
Bi_medicao
IF (@alerta_hum > 10)
INSERT INTO Bi_alerta (alerta_hum, alerta_temp, alerta_lpg, alerta_co, alerta_fumo)
VALUES (@alerta_hum, @alerta_temp, @alerta_lpg, @alerta_co, @alerta_fumo)
END
没有任何样本数据,table结构等,很难重现。无论如何,我建议修改插入如下:
INSERT INTO Bi_alerta (alerta_hum, alerta_temp, alerta_lpg, alerta_co, alerta_fumo)
SELECT med_hum, med_temp, med_lpg, med_co, med_fumo
FROM Bi_medicao
WHERE CAST(med_hum AS INT) > 10
我认为问题可能在于@alerta_hum 是 Varchar 而不是 INT。要么将声明更改为 INT,要么将 @alerta_hum 转换为
另外,我建议也对 IF 使用 BEGIN/END。
IF (CONVERT(INT, @alerta_hum) > 10)
BEGIN
INSERT INTO Bi_alerta (alerta_hum, alerta_temp, alerta_lpg, alerta_co, alerta_fumo)
VALUES (@alerta_hum, @alerta_temp, @alerta_lpg, @alerta_co, @alerta_fumo)
END
如果还是不行,你应该检查你的变量是否在用 Bi_medicao 重置后都被赋值了。简单的方法是插入一些 PRINT 语句,如 PRINT @alerta_hum
我正在开发一个项目,我在SQL服务器部分遇到了困难,我创建了一个程序,当table[=13=中的值嗡嗡声时,我需要它] 大于 10 他将该行放在另一行 table Bi_alerta
但问题是当我 运行 代码时一切正常,但当我看到它时却没有将任何内容放入 table ...只是不要将任何行添加到 Bi_alerta
table.
SQL 服务器存储过程:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Bi_alertainset]
@alerta_hum varchar(50),
@alerta_temp varchar(50),
@alerta_lpg varchar(50),
@alerta_co varchar(50),
@alerta_fumo varchar(50)
AS
BEGIN
SELECT
@alerta_hum = med_hum,
@alerta_temp = med_temp,
@alerta_lpg = med_lpg,
@alerta_co = med_co,
@alerta_fumo = med_fumo
FROM
Bi_medicao
IF (@alerta_hum > 10)
INSERT INTO Bi_alerta (alerta_hum, alerta_temp, alerta_lpg, alerta_co, alerta_fumo)
VALUES (@alerta_hum, @alerta_temp, @alerta_lpg, @alerta_co, @alerta_fumo)
END
没有任何样本数据,table结构等,很难重现。无论如何,我建议修改插入如下:
INSERT INTO Bi_alerta (alerta_hum, alerta_temp, alerta_lpg, alerta_co, alerta_fumo)
SELECT med_hum, med_temp, med_lpg, med_co, med_fumo
FROM Bi_medicao
WHERE CAST(med_hum AS INT) > 10
我认为问题可能在于@alerta_hum 是 Varchar 而不是 INT。要么将声明更改为 INT,要么将 @alerta_hum 转换为 另外,我建议也对 IF 使用 BEGIN/END。
IF (CONVERT(INT, @alerta_hum) > 10)
BEGIN
INSERT INTO Bi_alerta (alerta_hum, alerta_temp, alerta_lpg, alerta_co, alerta_fumo)
VALUES (@alerta_hum, @alerta_temp, @alerta_lpg, @alerta_co, @alerta_fumo)
END
如果还是不行,你应该检查你的变量是否在用 Bi_medicao 重置后都被赋值了。简单的方法是插入一些 PRINT 语句,如 PRINT @alerta_hum