问个超级弱智的问题,存储过程可以使用连接好了的SQL语句作为参数吗?谢谢!

qpgsd 2006-08-26 01:19:02
原来一个信息发布系统分页是使用的SQL语句将全部记录读出来用的。现在考虑到以后信息多了效率肯定会严重下降,想改用存储过程分类。但改动不想太大。

我想直接用存储过程传参数方式传入一条SQL语句。请问:可以这么用吗?如果可以,给个例子OK?谢谢啦
...全文
280 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
saite_bottle 2006-09-26
  • 打赏
  • 举报
回复
顶 学习一下
zbw9119 2006-09-01
  • 打赏
  • 举报
回复
good
wwh999 2006-08-26
  • 打赏
  • 举报
回复
对于Lz的问题,答案是可以的...例子1楼的朋友已经贴了..

specialsoldier(雪地撒野) ( ) 信誉:100 Blog 2006-08-26 09:57:00 得分: 0
字符串前一定要加N
----------------------
这个N有什么用啊? 看到好几次了 告诉我下 谢了~

加N是转换成Nvarchar数据类型
specialsoldier 2006-08-26
  • 打赏
  • 举报
回复
字符串前一定要加N
----------------------
这个N有什么用啊? 看到好几次了 告诉我下 谢了~
netcup 2006-08-26
  • 打赏
  • 举报
回复
当然可以,而且存储过程是最佳方案.
不过,你的传入参数可以作成变量吗?一般都是传入变量,然后在语句中使用这个变量.
若传入语句,那不成了固定的了?每次条件都一样了?
若实在要用,可以参考动态SQL
OracleRoob 2006-08-26
  • 打赏
  • 举报
回复


create proc sp_test
(
@p varchar(1000)
)
as

exec (@p)

go

--调用

declare @sql varchar(1000)
set @sql='select top 1 * from sysobjects'
exec sp_test @sql


drop proc sp_test
go



--------------------------------------------------------------------------------

动态sql语句基本语法
1 :普通SQL语句可以用Exec执行

eg: Select * from tableName
Exec('select * from tableName')
Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N

2:字段名,表名,数据库名之类作为变量时,必须用动态SQL

eg:
declare @fname varchar(20)
set @fname = 'FiledName'
Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。
Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格

当然将字符串改成变量的形式也可
declare @fname varchar(20)
set @fname = 'FiledName' --设置字段名

declare @s varchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句会报错



declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句正确

3. 输出参数
declare @num int,
@sqls nvarchar(4000)
set @sqls='select count(*) from tableName'
exec(@sqls)
--如何将exec执行结果放入变量中?

declare @num int,
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from tableName '
exec sp_executesql @sqls,N'@a int output',@num output
select @num




qpgsd 2006-08-26
  • 打赏
  • 举报
回复
传一个SQL语句,值一个代表当前页的变量,再传一个页面大小。这样可以了吗?

要求返回:
页面大小条数的记录集,总的条数与页数
cfan_wang 2006-08-26
  • 打赏
  • 举报
回复
MARK
学习一下
killxtt 2006-08-26
  • 打赏
  • 举报
回复
我想还得传一个类别的参数吧

62,073

社区成员

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

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

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

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