问题
I have a stored procedure that I need to convert to a standard query. Since I'm using SQL Server Compact, no stored procedures.
Here is my stored procedure:
declare @colu nvarchar (max) , @hour int
set @hour = DATEPART(HH, GETDATE() )
select @hour
select @colu =
case when @hour=24
then '[12:00AM(00:00)]'
enter code here
when @hour >12 and @hour <24
then '['+ convert(varchar,@hour-12) +':00PM('+ convert(nvarchar ,@hour) +':00)]'
when @hour=12
then '[12:00PM(12:00)]'
when @hour <12 and @hour >9
then '['+convert(nvarchar ,@hour) +':00AM('+ convert(nvarchar ,@hour) +':00)]'
else '['+convert(nvarchar ,@hour) +':00AM(0'+ convert(nvarchar ,@hour) +':00)]'
end
select @colu
declare @sql nvarchar(max)
set @sql= 'select ID,'''+ @colu + ''' as time from table' -- add quote here
select @sql
exec sp_executesql @sql
Like I say, I'm kind of stumped here. Any ideas?
回答1:
Here is the code that I used to determine the time value and dynamically specify the column name:
float basalrate = 0;
DateTime HourVal = Convert.ToDateTime(PumpEditTime);
if (HourVal == null)
{
HourVal = DateTime.Now;
}
int hourval = HourVal.Hour;
int ampmhour = Convert.ToInt32(HourVal.ToString("hh"));
string hourampm = string.Empty;
if (hourval == Convert.ToInt32("24"))
{
hourampm = "[12:00AM(00:00)]";
}
else if ((hourval > 12) && (hourval < 24))
{
hourampm = "[" + ampmhour + ":00PM(" + hourval + ":00)]";
}
else if (hourval == 12)
{
hourampm = "[12:00PM(12:00)]";
}
else if ((hourval < 12) && (hourval > 9))
{
hourampm = "[" + ampmhour + ":00AM(" + hourval + ":00)]";
}
else
{
hourampm = "[" + ampmhour + ":00AM(0" + hourval + ":00)]";
}
来源:https://stackoverflow.com/questions/17975289/how-to-convert-stored-procedure-to-sql-server-compact-edition-query