Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ2SQL, unknown return type / 6 сообщений из 6, страница 1 из 1
08.09.2011, 13:56
    #37430679
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LINQ2SQL, unknown return type
есть хп, но разработчики клиентской части не могут сгенерить для нее класс, получая ошибку:
unknown return type the return types for the following stored procedure could not be detected
методом научного тыка найдена проблемная строка в хп
Код: plaintext
SET @paramNames = LEFT(@paramNames, LEN(@paramNames) -  1 )

ошибка исчезает после переделки в что-нибудь с проверкой
Код: plaintext
1.
2.
	SET @len = LEN(@paramNames)
	SET @len = CASE WHEN @len >  0  THEN @len -  1  ELSE  0  END
	SET @paramNames = LEFT(@paramNames, @len)
могу предположить, что линк пытается каким-то образом проверить логическую корректность sql кода.

если вывод верной, то вопросы: почему линк настолько волнует содержимое хранимой процедуры и возможно ли это отключить? какой вообще в этом смысл, если в хранимках может использоваться динамика?


vs 2010, ms sql 2008 ent
...
Рейтинг: 0 / 0
08.09.2011, 22:07
    #37431707
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LINQ2SQL, unknown return type
Текст хп в студию. Скрипты создания таблиц (если имеются) тоже.

P.S. SET NOCOUNT ON в наличии?
...
Рейтинг: 0 / 0
09.09.2011, 12:43
    #37432487
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LINQ2SQL, unknown return type
МСУ, вот репро. в комменте вариант обрезания запятой, на который VS не ругается

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
CREATE PROCEDURE [dbo].[hp_Test] 
AS
BEGIN
	SET NOCOUNT ON;
	
	DECLARE @paramNames nvarchar( 4000 ) = N''
	
	SELECT @paramNames = @paramNames + N'param' + CAST(n.number AS nvarchar( 4000 )) + N','
	FROM (
		SELECT DISTINCT sp.number 
		FROM master.dbo.spt_values sp 
		WHERE sp.number BETWEEN  0  AND  10 
	) n	

	SET @paramNames = LEFT(@paramNames, LEN(@paramNames) -  1 )
	
	/*
        DECLARE @len int = LEN(@paramNames)
	SET @len = CASE WHEN @len >= 1 THEN @len - 1 ELSE 0 END
	SET @paramNames = LEFT(@paramNames, @len)
	*/
		
	SELECT @paramNames AS paramNames
END
...
Рейтинг: 0 / 0
09.09.2011, 16:42
    #37433106
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LINQ2SQL, unknown return type
Shakill, вот ответ на ваш вопрос
Код: plaintext
1.
2.
set fmtonly on
exec hp_Test
set fmtonly off
...
Рейтинг: 0 / 0
09.09.2011, 17:19
    #37433210
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LINQ2SQL, unknown return type
buser, вот оно что. спасибо большое

остаётся интерес, почему текст ошибки в vs такой неочевидный
...
Рейтинг: 0 / 0
09.09.2011, 17:38
    #37433257
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LINQ2SQL, unknown return type
Думаю индусы и try/catch
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ2SQL, unknown return type / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]