Table Valued Function Exception

Posts   
 
    
hotmail
User
Posts: 47
Joined: 06-Feb-2013
# Posted on: 20-Mar-2015 12:57:55   

Using v4.2 latest, .NET 4.5 , SQL Server 2014

I have a table valued function that basically splits string values and returns a table. When i run it on SQL server it works just fine.


SELECT * FROM [dbo].[TfStringSplit]('a,b,c,d',',') AS t
----------
SN  Item
1   a
2   b
3   c
4   d


but when i try to fetch this as a Typed View an exception is thrown, here is the code


        public TfStringSplitResultTypedView x()
        {
            var bucket = new RelationPredicateBucket(new DynamicRelation(TvfCallFactory.TfStringSplit("Tbl","a,b,c,d",",")));

            TfStringSplitResultTypedView tv = new TfStringSplitResultTypedView();
            using (DataAccessManager adapter = this.GetAdapter())
            {
                adapter.FetchTypedView(tv, bucket, true);
            }
            return tv;
        }

here is the stack trace.



   at SD.LLBLGen.Pro.ORMSupportClasses.RetrievalQuery.Execute(CommandBehavior behavior) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v4.2\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\Query\RetrievalQuery.cs:line 120
   at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterCore.ExecuteMultiRowDataTableRetrievalQuery(IRetrievalQuery queryToExecute, DbDataAdapter dataAdapterToUse, DataTable tableToFill, IFieldPersistenceInfo[] fieldsPersistenceInfo) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v4.2\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\DataAccessAdapterCore.cs:line 671
   at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterCore.FetchTypedView(DataTable dataTableToFill, QueryParameters parameters) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v4.2\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\DataAccessAdapterCore.cs:line 3064
   at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterBase.<>n__FabricatedMethod4e(DataTable , QueryParameters )
   at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterBase.<>c__DisplayClass4c.<FetchTypedView>b__4b() in c:\Myprojects\VS.NET Projects\LLBLGen Pro v4.2\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\DataAccessAdapterBase.cs:line 309
   at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterBase.ExecuteWithActiveRecoveryStrategy(Action toExecute) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v4.2\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\DataAccessAdapterBase.cs:line 517
   at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterBase.FetchTypedView(DataTable dataTableToFill, QueryParameters parameters) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v4.2\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\DataAccessAdapterBase.cs:line 309
   at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterCore.FetchTypedView(IEntityFields2 fieldCollectionToFetch, DataTable dataTableToFill, IRelationPredicateBucket filterBucket, Int32 maxNumberOfItemsToReturn, ISortExpression sortClauses, Boolean allowDuplicates, IGroupByCollection groupByClause, Int32 pageNumber, Int32 pageSize) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v4.2\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\DataAccessAdapterCore.cs:line 3013
   at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterCore.FetchTypedView(ITypedView2 typedViewToFill, IRelationPredicateBucket filterBucket, Boolean allowDuplicates) in c:\Myprojects\VS.NET Projects\LLBLGen Pro v4.2\Frameworks\LLBLGen Pro\RuntimeLibraries\ORMSupportClasses\AdapterSpecific\DataAccessAdapterCore.cs:line 2840
   at Hotel.DataAccess.DataAccessHelper.x() in c:\Users\Samar Basnet\Documents\Visual Studio 2013\Projects\HotelApplication\Hotel.DataAccess\DataAccessHelper.cs:line 83

When i look at the profiler this is what it executes


exec sp_executesql N'SELECT  AS [SN],  AS [Item] FROM (SELECT [SN] AS [SN], [Item] AS [Item] FROM  [HotelTest].[dbo].[TfStringSplit]( @p2, @p4 )) [LPA_T1]',N'@p2 nvarchar(7),@p4 nvarchar(1)',@p2=N'a,b,c,d',@p4=N','

When i run this on sql server this is the exception.


Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'AS'.
Msg 102, Level 15, State 1, Line 5
Incorrect syntax near 'LPA_T1'.

how can i get this resolved? Thanks

Walaa avatar
Walaa
Support Team
Posts: 14950
Joined: 21-Aug-2005
# Posted on: 20-Mar-2015 19:42:14   

Try the following:

    public TfStringSplitResultTypedView x()
    {
        var bucket = new RelationPredicateBucket(new DynamicRelation(TvfCallFactory.TfStringSplit("Tbl","a,b,c,d",",")));

        **bucket.Relations.SelectListAlias = "Tbl";**

        TfStringSplitResultTypedView tv = new TfStringSplitResultTypedView();
        using (DataAccessManager adapter = this.GetAdapter())
        {
            adapter.FetchTypedView(tv, bucket, true);
        }
        return tv;
    }
hotmail
User
Posts: 47
Joined: 06-Feb-2013
# Posted on: 21-Mar-2015 03:11:12   

That did it. Thank you.