执行存储过程时SQL Server数据无法显示问题求助
解决SQL Server存储过程执行后数据无法显示的问题
嘿,我来帮你排查这个存储过程执行后没数据显示的问题~首先看你贴的代码,最后部分被截断了(DECLARE @Error AS I...没写完),不过先从最常见的几个点入手分析:
一、先确认存储过程有没有返回数据的逻辑
你目前的代码只声明了@Fecha和@Error两个变量,但完全没有写返回结果集的语句(比如SELECT),这大概率是核心问题!如果你的需求是插入数据后返回新增的记录,或者返回执行状态,得补上对应的逻辑。给你个示例:
CREATE PROCEDURE [dbo].[pa_AnadeCine3] @Nombre AS VARCHAR(50) = '', @Empresa AS VARCHAR(50) = '', @CIF AS VARCHAR(12) = '', @Direccion AS VARCHAR(50) = '', @Localidad AS VARCHAR(50) = '', @Provincia AS VARCHAR(20) = '', @CP AS VARCHAR(5) = '', @Tlf1 AS VARCHAR(12) = '', @NumeroSalas AS SMALLINT = 0, @Metro AS VARCHAR(50) = '', @Bus AS VARCHAR(50) = '', @Email AS VARCHAR(100) = '', @GPS AS VARCHAR(100) = '' AS BEGIN SET NOCOUNT ON; -- 避免返回"受影响的行数"这类额外信息,可选 DECLARE @Fecha AS VARCHAR(23) DECLARE @Error AS INT -- 假设你原本想声明成INT类型,补全截断的部分 SET @Fecha = CONVERT(VARCHAR(23), GETDATE(), 121) -- 给日期变量赋值示例 -- 先假设你有插入数据的逻辑(这部分你可能没写完) INSERT INTO Cine (Nombre, Empresa, CIF, Direccion, Localidad, Provincia, CP, Tlf1, NumeroSalas, Metro, Bus, Email, GPS, Fecha) VALUES (@Nombre, @Empresa, @CIF, @Direccion, @Localidad, @Provincia, @CP, @Tlf1, @NumeroSalas, @Metro, @Bus, @Email, @GPS, @Fecha) -- 关键:添加返回结果的语句,比如返回刚插入的记录 SELECT * FROM Cine WHERE CIF = @CIF; -- 或者用SCOPE_IDENTITY()根据主键查找,更可靠 END
二、检查你执行存储过程的方式是否正确
- 如果是在SSMS里执行:
- 确保你选了**“结果到网格”或“结果到文本”**(别选“结果到文件”又没打开对应的文件)
- 执行语句要传对参数,比如:
EXEC [dbo].[pa_AnadeCine3] @Nombre = '测试影院', @Empresa = '测试公司';
- 如果是用应用程序调用:
- 别用
ExecuteNonQuery()(这个只返回受影响的行数,不会读取结果集),得用ExecuteReader()或者Fill()方法来获取返回的数据。
- 别用
三、先确认数据到底有没有被插入
就算没返回结果,也先查一下目标表,看看数据是否真的写进去了:
SELECT * FROM Cine WHERE Nombre = '你刚才传入的测试名称';
如果数据没插入,那得排查存储过程里的插入逻辑:有没有违反表的约束(比如主键重复、非空字段为空)?是不是参数传错了?建议加个错误处理块,方便排查:
BEGIN TRY -- 你的插入逻辑 INSERT INTO Cine (...) VALUES (...); -- 返回结果 SELECT * FROM Cine WHERE ...; END TRY BEGIN CATCH -- 出错时返回错误信息 SELECT ERROR_NUMBER() AS 错误编号, ERROR_MESSAGE() AS 错误描述; END CATCH
四、补全你的存储过程代码
你贴的代码最后是DECLARE @Error AS I...,明显被截断了,这会导致存储过程要么创建失败,要么逻辑不完整。先把完整的代码补全,确保创建时没有语法报错,再去测试执行。
内容的提问来源于stack exchange,提问作者ashok poudel
相关产品推荐
相关产品推荐

