Что не так?

kika

Создаю такую функцию:
<pre class="prettyprint linenums">CREATE FUNCTION [dbo].[GetMonth] (@m int ) RETURNS varchar(50) AS BEGIN declare @res varchar(50) select @res= Case when @m=1 then 'January' when @m=2 then 'Febrary' when @m=3 then 'March' when @m=4 then 'April' when @m=5 then 'May' when @m=6 then 'June' when @m=7 then 'July' when @m=8 then 'August' when @m=9 then 'September' when @m=10 then 'October' when @m=11 then 'November' when @m=12 then 'December' End return @res END</pre>
А мне пишет:Error 2010: Cannot perform alter on dbo.GetMonth because it is an incompatible object type.Что не так?
8 ответов

kika

Может попровать SELECT на SET поменять?


kika

У меня ваш код нормально работает. Функция создается и вызывается.Что-то вы недоговариваете. Или может это глюк Enterprise manager'а? Попробуйте этот код выполнить в Query Analyzer'е.


kika

Error 2010: Cannot perform alter on dbo.GetMonth because it is an incompatible object type.
Есть объект с таким именем, но другим типомНапрмер Inline функция, а вы ее пытаетесь заменить Scalar функциейСовет: удалите старую и только потом создавайте новую


kika

А скорее всего имя GetMonth уже где то используется...


kika

Видимо это был и правда глюк!Создаю функцию с друким именем - все нормально!paparome, можете подоступнее объяснить что это было?


kika

А чо ты папу спрашиваешь,спроси,лучше свою базу
<pre class="prettyprint linenums">select * from sysobjects where name='GetMonth' </pre>


kika

Зачем придумывать велосипед...
<pre class="prettyprint linenums">Examples This example extracts the month name from the date returned by GETDATE. SELECT DATENAME(month, getdate()) AS 'Month Name'</pre>