SQL,动态打印。

zhouixi 2012-05-16 01:25:16

DECLARE @TableName VARCHAR(50),@Sql NVARCHAR(MAX),@OrderID int , @a varchar(100)
SET @TableName = 'Orders';
SET @OrderID=10251;
SET @a = 'SELECT * FROM '+QUOTENAME(@TableName) +'WHERE OrderID = @OrderID ORDER BY ORDERID DESC'
SET @Sql = 'SELECT * FROM '+QUOTENAME(@TableName) +'WHERE OrderID = '+CAST(@OrderID AS VARCHAR(10))+' ORDER BY ORDERID DESC'
PRINT @a
PRINT @Sql


SELECT * FROM [Orders]WHERE OrderID = @OrderID ORDER BY ORDERID DESC
SELECT * FROM [Orders]WHERE OrderID = 10251 ORDER BY ORDERID DESC

中间为啥要将变量转换一下。

...全文
111 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouixi 2012-05-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
因为动态的是字符型,你现在的@OrderID是int型,会报类型错误,必须转换成varchar型或nvarchar型等字符型。
[/Quote]

你说的是赋值么,可定义的是字符型阿,
gogodiy 2012-05-16
  • 打赏
  • 举报
回复
因为动态的是字符型,你现在的@OrderID是int型,会报类型错误,必须转换成varchar型或nvarchar型等字符型。
zhouixi 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
SET @a 这个 你这样写 相当于拼接字符串了,就跟.cs文件中 拼接字符串一样。
这样说明白么?
[/Quote]

我的意思是说,为啥用CAST 强制转换后就变成了具体的数据,而不是单单的变量名。
zhouixi 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
你可以不转换试试效果 看看报什么错误。
[/Quote]

报变量不存在。
zhouixi 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
@sql(字符串)=’字符串1‘+这里将需要将@orderid转化为字符串+‘字符串2’
[/Quote]

执行动态为什么要转换,是因为EXEC的原因么。
--小F-- 2012-05-16
  • 打赏
  • 举报
回复
你可以不转换试试效果 看看报什么错误。
rybin_1987 2012-05-16
  • 打赏
  • 举报
回复
SET @a 这个 你这样写 相当于拼接字符串了,就跟.cs文件中 拼接字符串一样。
这样说明白么?
迪迦凹凸曼 2012-05-16
  • 打赏
  • 举报
回复
@sql(字符串)=’字符串1‘+这里将需要将@orderid转化为字符串+‘字符串2’

34,590

社区成员

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

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