这样的存储过程,在数据库中应该怎样执行???

starryautomation 2012-07-10 03:11:12
这样的存储过程,在数据库中应该怎样执行???

存储过程如下:

ALTER proc [dbo].[FindRoom]
@FieldNames nvarchar(100),
@Condition nvarchar(100)
as
declare @sql nvarchar(800)
set @sql='select '
if @FieldNames<>''
set @sql=@sql+@FieldNames
else
set @sql=@sql+'RoomNo
,RoomName
,RoomAlias
,RoomArea
,PersonNum'
set @sql=@sql+' FROM Room where 1=1 '+@Condition
exec (@sql)

目的:为此存储过程传递“两个空字符串”,作为参数。

第一种方式,右键执行存储过程


(1)什么值也不传。


结果:

DECLARE @return_value int

EXEC @return_value = [dbo].[FindRoom]

SELECT 'Return Value' = @return_value

错误信息:

Msg 201, Level 16, State 4, Procedure FindRoom, Line 0
Procedure or function 'FindRoom' expects parameter '@FieldNames', which was not supplied.

(1 row(s) affected)

(2)传入两个""

结果:

DECLARE @return_value int


EXEC @return_value = [dbo].[FindRoom]
@FieldNames = N'""',
@Condition = N'""'

SELECT 'Return Value' = @return_value

错误信息:

Msg 1038, Level 15, State 4, Line 1
An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as "" or [] are not allowed. Change the alias to a valid name.
Msg 1038, Level 15, State 4, Line 1
An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as "" or [] are not allowed. Change the alias to a valid name.
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near ''.

(3)传入两个''

结果:

DECLARE @return_value int

EXEC @return_value = [dbo].[FindRoom]
@FieldNames = N'''''',
@Condition = N''''''

SELECT 'Return Value' = @return_value

错误信息:
Msg 102, Level 15, State 1, Line 1

Incorrect syntax near ''.

(1 row(s) affected)


第二种方式,SQL执行存储过程。

(1)exec FindRoom '' ''

错误信息:

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near ''.

(2)exec FindRoom '''' ''''

错误信息:

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '''.

(3)exec FindRoom '''''' ''''''

错误信息:

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near ''''.

(4)exec FindRoom

Msg 201, Level 16, State 4, Procedure FindRoom, Line 0
Procedure or function 'FindRoom' expects parameter '@FieldNames', which was not supplied.


问题:试了那么多的方法,到底怎样才能给“存储过程FindRoom”传两个“空字符串”作为参数。。。 为什么它们都不行呢???
...全文
272 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
starrycheng 2012-08-18
  • 打赏
  • 举报
回复
exec 存储过程名 参数名=参数值
杰拉尔 2012-08-15
  • 打赏
  • 举报
回复
没看明白问题

exec [dbo].[FindRoom] '','' 这样可以吗
asd100230520 2012-08-06
  • 打赏
  • 举报
回复
拼接sql语句
@FieldNames 不等于空的话 表示要查询的列名吧
@Condition 是参数
  • 打赏
  • 举报
回复
DECLARE @return_value int


EXEC @return_value = [dbo].[FindRoom]
@FieldNames = '',
@Condition = ''

starrycheng 2012-07-23
  • 打赏
  • 举报
回复
谁能解释下。。。
xdf008 2012-07-10
  • 打赏
  • 举报
回复
FindRoom '',''

win_perfect 2012-07-10
  • 打赏
  • 举报
回复
用你第一种执行方法 把pass null。。。那里的复选框给勾上了吗?
starrycheng 2012-07-10
  • 打赏
  • 举报
回复
这存储过程执行的够纠结的。。。

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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