You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用存储过程dbo.Bi_medicaoInset提示@ID_interno_disp参数未提供如何解决

问题根因

  • 你在C#代码中声明了@ID_interno_disp参数,但没有为其赋值,存储过程接收不到必填参数所以抛出报错
  • 存储过程存在语法错误,关键字写错,参数引用有多余空格
  • 存储过程名称引用存在冗余的dbo.前缀

修复步骤

1. 修正C#代码

给@ID_interno_disp参数赋值,你需要先从Bi_dispositivo表中拿到你要传入的ID值(替换下方代码中的你的目标设备ID变量),同时修正存储过程名称:

SqlConnection connString = new SqlConnection ("Data Source = (LocalDb) \\ MSSQLLocalDB; Initial Catalog = tupaidb; Integrated Security = True");
connString.Open ();
                    
SqlCommand command = new SqlCommand ();
command.Connection = connString;
// 修正存储过程名称,去掉多余的dbo前缀
command.CommandText = "[dbo].[Bi_medicaoInset]";
command.CommandType = CommandType.StoredProcedure;

// 给ID参数赋值,替换为你实际从Bi_dispositivo表查询到的ID值
command.Parameters.Add ("@ID_interno_disp", SqlDbType.Int).Value = 你的目标设备ID变量;
command.Parameters.Add ("@med_hum", SqlDbType.VarChar, (50)). Value = humidity + "%";
command.Parameters.Add ("@med_temp", SqlDbType.VarChar, (50)). Value = temperature + "ºC";
command.Parameters.Add ("@med_lpg", SqlDbType.VarChar, (50)). Value = lpgGas + "%";
command.Parameters.Add ("@med_co", SqlDbType.VarChar, (50)). Value = monoCarbo + "%";
command.Parameters.Add ("@med_fumo", SqlDbType.VarChar, (50)). Value = smoke + "%";
command.ExecuteNonQuery ();
connString.Close ();

如果你需要动态从Bi_dispositivo表取ID,可以提前执行查询语句拿到对应ID,示例如下:

// 示例:查询Bi_dispositivo表的指定ID,可根据自身业务需求加WHERE筛选条件
SqlCommand getIdCmd = new SqlCommand("SELECT TOP 1 ID_interno_disp FROM Bi_dispositivo", connString);
int deviceId = (int)getIdCmd.ExecuteScalar();
command.Parameters.Add ("@ID_interno_disp", SqlDbType.Int).Value = deviceId;

2. 修正存储过程代码

把关键字AT改为AS,去掉values中参数名和@之间的多余空格:

USE [tupaidb]
GO
/ ****** Object: StoredProcedure [dbo].[Bi_medicaoInset] Script Date: 5/18/2021 08:29:17 ****** /
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Bi_medicaoInset]
    @ID_interno_disp int,
    @med_hum Varchar (50),
    @med_temp Varchar (50),
    @med_lpg Varchar (50),
    @med_co Varchar (50),
    @med_fumo Varchar (50)
AS -- 修正原错误关键字AT
BEGIN
    insert into Bi_medicao (ID_interno_disp, med_hum, med_temp, med_lpg, med_co, med_fumo)
    values (@ID_interno_disp, @med_hum, @med_temp, @med_lpg, @med_co, @med_fumo) -- 去掉@和参数名之间的多余空格
END

表结构示意图

内容的提问来源于stack exchange,提问作者Pedro Tavares

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 01:45:03