如果语句仅仅是像你那样的话,
我看做成View好些!不过,我没听说过优化存储过程!! :)
解决方案 »
- 能否一条语句插入500行数据?
- 求一sql,关于商品销售情况统计
- 谁能帮我解决这个棘手的问题!先谢谢!
- 用C#,在已经连接的数据库的情况下创建表的问题
- SQL SERVER事务在隔离级别为READ UNCOMITTED下,还具备ACID特点吗?
- 查询四个表的信息 一条SQL语句,高手指点
- 关注---->SQL应收款查询的问题?
- 更改IP后新装客户端也不能连接到客户端?急急
- 高分求一高效sql查询,要求比较高。
- 我用log expoler恢复数据 其他的表都可以恢复 只有一个表显示恢复0/64条数据 为什么都找到了我truncate64条却无法恢复
- 請問如何在用編程建立Sql server的Table
- 这个SQL怎么写
返回值可以是一个表!
再问一下,什么叫UDF?
as
select * from Tablename where sex = '男';
要让存储过程返回结果集,saucer(思归)的写法就可以。
但當總行數少于每頁行數時在ACCESS中就不行﹐就只能直接寫select top 12 * from table order by ...了可在存儲過程中這樣定義
declare @sql nvarchar(1000)
sql=...以上寫出
exec sp_executesql @sql
即可返回所需記錄
--以下是我寫過的一個分頁存儲過程﹐有興趣看看吧CREATE PROCEDURE [PR_PAGE_USER]
@L_TOTAL_PAGE INTEGER =NULL OUTPUT
,@S_SORT_COL VARCHAR(30)
,@S_TABLE_NAME VARCHAR(30)
,@S_SORT_TYPE VARCHAR(10) ='DESC'
,@L_PAGE_SIZE INT =12
,@L_PAGE_NUM INT =1 ASDECLARE @SQL_USER NVARCHAR(500)
,@L_ROW INT
,@L_TOTAL_COL INTSET @SQL_USER='SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=''' + @S_TABLE_NAME
+ ''' AND COLUMN_NAME=''' + @S_SORT_COL + ''''
EXEC SP_EXECUTESQL @SQL_USER
SET @L_TOTAL_PAGE=@@Rowcount
IF @L_TOTAL_PAGE = 0
BEGIN
SET @L_TOTAL_PAGE = -1
RETURN
END
ELSEIF @L_PAGE_NUM < 1 SET @L_PAGE_NUM=1SET @SQL_USER='SELECT COUNT(*) FROM ' + @S_TABLE_NAME
EXEC SP_EXECUTESQL @SQL_USER
SET @L_TOTAL_COL=@@ROWCOUNTIF FLOOR(@L_TOTAL_COL / @L_PAGE_SIZE) + 1 < @L_PAGE_NUM SET @L_PAGE_NUM = FLOOR(@L_TOTAL_COL / @L_PAGE_SIZE) + 1
SET @L_TOTAL_PAGE = FLOOR(@L_TOTAL_COL / @L_PAGE_SIZE) + 1
IF @S_SORT_TYPE = 'DESC'
BEGIN
SET @SQL_USER='SELECT TOP ' + CONVERT(VARCHAR,@L_PAGE_SIZE) + ' * FROM ' + @S_TABLE_NAME + ' WHERE '
+ @S_SORT_COL + ' < ALL(SELECT TOP ' + CONVERT(VARCHAR,(@L_PAGE_NUM - 1) * @L_PAGE_SIZE) + ' ' + @S_SORT_COL
+ ' FROM ' + @S_TABLE_NAME + ' ORDER BY ' + @S_SORT_COL + ' ' + @S_SORT_TYPE + ' ) ORDER BY ' + @S_SORT_COL + ' '
+ @S_SORT_TYPE +';'
END
ELSE
BEGIN
SET @SQL_USER='SELECT TOP ' + CONVERT(VARCHAR,@L_PAGE_SIZE) + ' * FROM ' + @S_TABLE_NAME + ' WHERE '
+ @S_SORT_COL + ' > ALL(SELECT TOP ' + CONVERT(VARCHAR,(@L_PAGE_NUM - 1) * @L_PAGE_SIZE) + ' ' + @S_SORT_COL
+ ' FROM ' + @S_TABLE_NAME + ' ORDER BY ' + @S_SORT_COL + ' ' + @S_SORT_TYPE + ' ) ORDER BY ' + @S_SORT_COL + ' '
+ @S_SORT_TYPE +';'
END
EXEC SP_EXECUTESQL @SQL_USER