我想通过Microsoft.FSharp.Data.TypeProviders.SqlDataConnection类型访问现有的数据库。有一些没有提供的存储过程(但大多数是)。F#SQL类型提供程序 - 为什么不提供所有存储过程?
我想确定什么区别不可取的程序与其他人 - 我相信自定义类型是类型提供可能失败的原因之一,但他们似乎并没有出现在这里。
为什么其他原因可能导致我们的存储过程不可靠?
编辑:
我已经确定了以下块作为一个引起unprovidability:
EXEC @intReturn = te_audit_log @action = 'I',
@user_id = @intUserId,
@table_id = 1,
@audit_action = 'A',
@data_id = @intStatus,
@session_guid = @session_guid,
@effective_date = @actual_timedate,
@employee_id = @employee_id
...我认为这是因为正在“执行”编辑也有路径的存储过程从临时表中返回值。
只是猜测:也许那些有输出参数的SP没有提供。 – Petr
我现在在其中的一个分支中查看,从它创建的#temp表中执行SELECT操作。当我删除它时,F#能够提供存储过程。 –
可能是因为它无法执行[sp_describe_first_result_set](https://msdn.microsoft.com/en-us/library/ff878602.aspx)或sys.dm_exec_describe_first_result_set并返回元数据。当SP包含临时表时,我观察到了这一点。从文档“sp_describe_first_result_set在下列任何情况下都会返回错误 - 如果语句使用临时表”。 – lad2025