The return types for the following stored procedures could not be detected
1、使用dbml映射数据库,添加存储过程到dbml文件时报错。
2、原因:存储过程中使用了临时表
3、解决方案
3.1 通过自定义表值变量实现
Ex:
DECLARE @TempTable TABLE
(
AttributeID INT,
Value NVARCHAR(200)
)
INSERT INTO @TempTable Select * from Attribute
OR
--Execute SP and insert results into @TempTable
INSERT INTO @TempTable Exec GetAttribute @Id
You can do all operation which you was doing with #Temp table like Join, Insert, Select etc.
3.2 选中Db.dmbl文件--右键--新建--class文件--名称Db.cs,自定义partial class Db,写获取数据的方法,其中MyModel为你需要返回的数据model,Id为存储过程输入参数,存储过程名称为GetDataById(原名为[GetProjectsByClientId])
public partial class Db { [global::System.Data.Linq.Mapping.FunctionAttribute(Name = "dbo.GetDataById")]
public ISingleResult<MyModel> GetProjectsByClientId([global::System.Data.Linq.Mapping.ParameterAttribute(DbType = "NVarChar(10)")] string Id)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((System.Reflection.MethodInfo)(System.Reflection.MethodInfo.GetCurrentMethod())), Id);
return ((ISingleResult<MyModel>)(result.ReturnValue));
} }
调用: IList<MyModel> lst = db.GetDataById(id).ToList();
4、存储过程(进行了简化,理解意思即可)
IF object_id('GetDataById') IS NOT NULL
DROP PROCEDURE [dbo].[GetDataById]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[GetDataById]
@clientId nvarchar(10)
as
begin
SET NOCOUNT ON;
IF object_id('tempdb..##tempProject') IS NOT NULL
DROP TABLE ##tempProject
select * into ##tempProject from Project where ClientId=@ClientId
select p.id as ID,p.Name,a.Code,b.dtDate
from ##tempProject p
left join [dbo].[A] a on p.Id=a.ProjectId
left join [dbo].[B] b on b.ProjectId=a.ProjectId
end
GO
参考:
http://riteshkk2000.blogspot.com.au/2010/08/error-unknown-return-type-return-types.html
最新文章
- <;!DOCTYPE html>;很重要
- mssql 小技巧
- [JWFD开源工作流]JWFD开源工作流官方下载内容更新
- Educational Codeforces Round 4 B. HDD is Outdated Technology 暴力
- PHP 中mysql如何实现事务提交?
- Winform Textbox实现滚动条始终在最下面
- Git 笔记二-Git安装与初始配置
- Windows下搭建HTTP/HTTPS服务器及测试过程
- ES6新属性笔记
- R语言生成随机数
- HDU 4291 A Short problem(矩阵+循环节)
- [POI2007]ZAP-Queries
- Intellij idea使用过程中遇到的一些问题
- Excel中的数据与DataSet的互换
- L1-056 猜数字
- Linux远程批量工具mooon_ssh和mooon_upload使用示例
- android(七)Looper Handler分析
- 「不定期更新」MacOS 编辑器使用小技巧
- ORA-01919: role &#39;OLAPI_TRACE_USER&#39; does not exist
- 在Eclipse中导入新浪微博SDK