DotNetNext / SqlSugar

.Net aot ORM Fastest ORM Simple Easy VB.NET Sqlite orm Oracle ORM Mysql Orm 虚谷数据库 postgresql ORm SqlServer oRm 达梦 ORM 人大金仓 ORM 神通ORM C# ORM , C# ORM .NET ORM NET5 ORM .NET6 ORM ClickHouse orm QuestDb ,TDengine ORM,OceanBase orm,GaussDB orm ,Tidb orm Object/Relational Mapping
https://www.donet5.com/Home/Doc
MIT License
5.31k stars 1.33k forks source link

SqlSugar 使用 ODBC 连接 SQL Server 2008 ,调用存储过程无法返回查询数据 #1261

Closed Yoodanet closed 3 months ago

Yoodanet commented 3 months ago

DotNetNext 你好,我刚使用SqlSugar的api调用存储过程查询数据,无法返回查询的数据。代码如下:

.Ado.UseStoredProcedure().SqlQuery("getcustomer", new { id= "1000"});

返回的记录数量为0。 使用 GetDataTable 就可以返回数据。

麻烦帮助查看一下,谢谢!!!

DotNetNext commented 3 months ago

这个不应该的,因为底层几乎一个方法

Yoodanet commented 3 months ago

可能是传参的问题,我刚试了下面的代码也不行: .Ado.UseStoredProcedure().GetDataTable("getcustomer", new { type = "update_status_d1", doc_no = tlNumber }); 但是如果是拼接的SQL 语句就可以,比如“exec getcustomer @type='asdf' ” ,这样就可以。

DotNetNext commented 3 months ago

那就是ODBC不支持 UseStoredProcedure

DotNetNext commented 3 months ago

只能exec写法

DotNetNext commented 3 months ago

你可以用 db.ado.sqlquery("exec xxx @p",new {p=1})

Yoodanet commented 3 months ago

我查看了一下资料,ODBC调用存储过程的格式应该为 “{CALL sp_name(?)}” , 咱们的Sqlsugar是这样解析的吗?麻烦帮助确认一下。 {CALL sp_name(?,?)} : 小括号里的问号代表参数。

DotNetNext commented 3 months ago

这个是odbc驱动处理

DotNetNext commented 3 months ago

我这边处理不了具体格式

DotNetNext commented 3 months ago

我这边只能指定CommandType=存储过程

DotNetNext commented 3 months ago

还有问题吗?没有问题我就关闭了。

Yoodanet commented 3 months ago

嗯嗯,关闭吧。谢谢!