用sql输出正弦曲线

lihan6415151528 2009-11-03 11:12:18
就当活跃活跃气氛吧~
...全文
364 34 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaolihuavvv 2009-12-03
  • 打赏
  • 举报
回复
牛人啊
zqtoo 2009-11-17
  • 打赏
  • 举报
回复
laker_914 2009-11-17
  • 打赏
  • 举报
回复
等待答案
brio8425 2009-11-17
  • 打赏
  • 举报
回复
真招。?~!
icelovey 2009-11-17
  • 打赏
  • 举报
回复
楼主不要保存实力了, 出手吧
lgxyz 2009-11-17
  • 打赏
  • 举报
回复
要横的....
这个要写个过程才可以的吧
lass_name 2009-11-17
  • 打赏
  • 举报
回复
强。。。。。。
学习了。。。。。
yananguo_1985 2009-11-17
  • 打赏
  • 举报
回复
JF
lgxyz 2009-11-17
  • 打赏
  • 举报
回复
exec dbo.P_DrawSin 0,720
/*
*** ***
** ** ** **
* * * *
* * * *
* * * *
* * * *
* * * *
0 0 0 0 0
* * * *
* * * *
* * * *
* * * *
* * * *
** ** ** **
*** ***

*/
lgxyz 2009-11-17
  • 打赏
  • 举报
回复

CREATE PROCEDURE P_DrawSin
(
@BeDegree decimal (10,2),
@EdDegree decimal (10,2)
)
AS
SET NOCOUNT ON
DECLARE @PAR VARCHAR(50)
SET @PAR=CONVERT(VARCHAR,@BeDegree)
IF (CONVERT(INT,@BeDegree)%10)<>0
BEGIN
RAISERROR('"%s" 不是10的倍数,请录入10的倍数参数',12,16,@PAR)
RETURN
END

SET @PAR=CONVERT(VARCHAR,@EdDegree)
IF (CONVERT(INT,@EdDegree)%10)<>0
BEGIN
RAISERROR('"%s" 不是10的倍数,请录入10的倍数参数',12,16,@PAR)
RETURN
END


DECLARE @TB TABLE (ADegrees Decimal (10,2),ASine Decimal (10,2))
DECLARE @TC TABLE (ADegrees Decimal (10,2),ASine Decimal (10,2))
DECLARE @Sine Decimal (10,2),@Radians Decimal (10,2),@Degrees Decimal (10,2),@Tmp1 Decimal (10,2),@Tmp2 INT
DECLARE @SQL VARCHAR(8000),@SQLTMP VARCHAR(8000),@RE VARCHAR(8000)
SELECT @Radians = Radians(Convert(Float,@BeDegree)),@Degrees=@BeDegree
WHILE (@Degrees<=@EdDegree)
BEGIN
SET @Sine=ROUND(SIN(@Radians)*10,0)
INSERT INTO @TB SELECT @Degrees,@Sine
SET @Degrees=@Degrees+10
SET @Radians= RADIANS(CONVERT(FLOAT,@Degrees))
END

DECLARE SinCURSOR CURSOR READ_ONLY FOR
SELECT ADegrees=MIN(ADegrees),ASine FROM @TB GROUP BY ASine ORDER BY ASine Desc
OPEN SinCURSOR

FETCH NEXT FROM SinCURSOR INTO @Degrees,@Sine
WHILE (@@FETCH_STATUS <> -1)
BEGIN
IF @Sine=0
SET @PAR='0'
ELSE
SET @PAR='*'
SET @SQL='SPACE('+CONVERT(VARCHAR(10),CEILING(@Degrees-@BeDegree))+'/10)+'''+@PAR+''''
IF EXISTS (SELECT 1 FROM @TB WHERE ADegrees<>@Degrees AND ASine=@Sine)
BEGIN
DELETE @TC
INSERT INTO @TC SELECT ADegrees,@Sine FROM @TB WHERE ASine=@Sine ORDER BY ADegrees
SELECT @Tmp1=NULL,@Tmp2=NULL
UPDATE @TC
SET @Tmp1=@Tmp2,
@Tmp2=ADegrees,
@SQLTMP=ISNULL(@SQLTMP,'')+'+SPACE('+CONVERT(VARCHAR(10),(ABS(ADegrees-@Tmp1)/10)-1)++')+'''+@PAR+''''
WHERE ASine=@Sine
END
SELECT @RE=CASE WHEN @RE IS NULL THEN '' ELSE @RE+'+CHAR(10)+CHAR(13)+' END + @SQL+ISNULL(@SQLTMP,'')
SET @SQL=''
SET @SQLTMP=''
FETCH NEXT FROM SinCURSOR INTO @Degrees,@Sine
END
CLOSE SinCURSOR
DEALLOCATE SinCURSOR
EXEC ('PRINT '+@RE)
SET NOCOUNT OFF


--测试
exec dbo.P_DrawSin 0,1800

/*

*** ***
** ** ** **
* * * *
* * * *
* * * *
* * * *
* * * *
0 0 0 0 0
* * * *
* * * *
* * * *
* * * *
* * * *
** ** ** **
*** ***


*/

love41349279 2009-11-17
  • 打赏
  • 举报
回复
牛X
renadg 2009-11-17
  • 打赏
  • 举报
回复
都好厉害....牛人....
Rotel-刘志东 2009-11-06
  • 打赏
  • 举报
回复
等待高手了。
阿_布 2009-11-06
  • 打赏
  • 举报
回复
yanglinqiang 2009-11-06
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 urdoom 的回复:]
竖着的行不行?俺还不会行列转换~
SQL codedeclare@xfloatdeclare@tbtable(yfloat)set@x=0while@x<360begininsertinto@tbselectROUND(SIN(RADIANS(@x))*100,0)set@x=@x+5endselectspace(201+ y-100 )+'*'from@tb----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------************************************************************************
[/Quote]
佩服……
guguda2008 2009-11-06
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 urdoom 的回复:]
竖着的行不行?俺还不会行列转换~
SQL codedeclare@xfloatdeclare@tbtable(yfloat)set@x=0while@x<360begininsertinto@tbselectROUND(SIN(RADIANS(@x))*100,0)set@x=@x+5endselectspace(201+ y-100 )+'*'from@tb----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------************************************************************************
[/Quote]
牛。。。
pbsh 2009-11-06
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 urdoom 的回复:]
竖着的行不行?俺还不会行列转换~
SQL codedeclare@xfloatdeclare@tbtable(yfloat)set@x=0while@x<360begininsertinto@tbselectROUND(SIN(RADIANS(@x))*100,0)set@x=@x+5endselectspace(201+ y-100 )+'*'from@tb----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------************************************************************************
[/Quote]

拜~
urdoom 2009-11-05
  • 打赏
  • 举报
回复
竖着的行不行?俺还不会行列转换~

declare @x float
declare @tb table(y float)

set @x = 0

while @x < 360
begin
insert into @tb select ROUND(SIN(RADIANS(@x)) * 100,0)
set @x = @x + 5
end

select space(201 + y - 100 )+ '*' from @tb


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
「已注销」 2009-11-03
  • 打赏
  • 举报
回复
print 你要的图形.
我很强.谢谢。
navy887 2009-11-03
  • 打赏
  • 举报
回复
看看
加载更多回复(12)

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧