2012-01-23 2 views
0

У меня была хранимая функция, созданная на SQL Server. Когда я пытаюсь позвонить, что из vb.net с командой текста как ...SQL хранимый вызов функции из vb.net

---- Returning error 
lobjCommand.CommandText="Select function_name(value1)" 

----- Executing properly without errors  
lobjCommand.CommandText="Select dbo.function_name(value1)" 

Может кто-то предложить, что именно DBO играет волшебство ...

Заранее спасибо Rupesh

ответ

1

dbo, скорее всего, ваша схема по умолчанию. Он обозначает Database Owner.

При запуске функций в ваших SQL-запросах вам нужно указать схему, к которой принадлежит функция.

Если вы этого не сделаете, тогда могут быть две разные функции с именем function_name, принадлежащие двум различным схемам. Без упоминания схемы сервер не будет знать, какую функцию вы вызываете.

+0

Благодаря Curt, Есть ли способ, мы выполняем скалярную функцию от vb.net другой, чем с помощью оператора выбора – Rupesh

+1

я бы рекомендовал использовать запрос, как ваш второй, 'Выбор DBO .function_name (значение1) '. Я не вижу проблемы с этим. В качестве альтернативы вы можете переместить этот запрос в хранимую процедуру и выполнить хранимую процедуру для получения возвращаемого значения. – Curt

0

Механизм SQL Server всегда анализирует запрос на куски, если вы не используете префикс, который обязательно будет искать объект в схожих именах с разными пользователями, прежде чем он использует [dbo]. Я бы посоветовал вам следовать префиксному механизму не только для того, чтобы удовлетворить лучшие практики, но и избежать сбоев в производительности и сделать код масштабируемым.

старый вопрос, который задают передать этот link

Смежные вопросы