新聞中心
sqlserver關(guān)于動態(tài)執(zhí)行sql問題?
set @flag3=@flag3+1;
澧縣網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)自2013年創(chuàng)立以來到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
set @temp1=DATEADD(M,1,@temp1);
set @temp3=@temp1;
在你循環(huán)中賦值的語句,你是想每次循環(huán)賦不同的時間,但是在你用exec調(diào)用時,只能傳入最后計算好的唯一的值,這樣可能就查詢不到數(shù)據(jù)了吧,不然你拼接成字符串吧
求sql,sqlserver+beetsql動態(tài)表分頁,需要動態(tài)傳表名,表中間沒有關(guān)聯(lián)關(guān)系,存在都有的公共字段。
if exists(Select name from sysobjects where name='Sp_Page')
drop proc Sp_Page
go
Create PROCEDURE Sp_Page
(
@TableName varchar(50), --表名
@ReFieldsStr varchar(200) = '*', --字段名(全部字段為*)
@OrderString varchar(200), --排序字段(必須!支持多字段不用加order by)
@WhereString varchar(500) =N'', --條件語句(不用加where)
@PageSize int, --每頁多少條記錄
@PageIndex int = 1 , --指定當前為第幾頁
@TotalRecord int output --返回總記錄數(shù)
)
AS
BEGIN
--處理開始點和結(jié)束點
Declare @StartRecord int;
Declare @EndRecord int;
Declare @TotalCountSql nvarchar(500);
Declare @SqlString nvarchar(2000);
set @StartRecord = (@PageIndex-1)*@PageSize + 1
set @EndRecord = @StartRecord + @PageSize - 1
SET @TotalCountSql= N'select @TotalRecord = count(*) from ' + @TableName;--總記錄數(shù)語句
SET @SqlString = N'(select row_number() over (order by '+ @OrderString +') as rowId,'+@ReFieldsStr+' from '+ @TableName;--查詢語句
--
IF (@WhereString! = '' or @WhereString!=null)
BEGIN
SET @TotalCountSql=@TotalCountSql + ' where '+ @WhereString;
SET @SqlString =@SqlString+ ' where '+ @WhereString;
END
--第一次執(zhí)行得到
--IF(@TotalRecord is null)
-- BEGIN
EXEC sp_executesql @totalCountSql,N'@TotalRecord int out',@TotalRecord output;--返回總記錄數(shù)
-- END
----執(zhí)行主語句
set @SqlString ='select * from ' + @SqlString + ') as t where rowId between ' + ltrim(str(@StartRecord)) + ' and ' + ltrim(str(@EndRecord));
Exec(@SqlString)
END
go
調(diào)用以上存儲過程可以實現(xiàn)分頁效果,樓主應(yīng)該會使用存儲過程吧?關(guān)鍵字exec.至于表有沒有ID是沒問題的,order by隨便你選一列就OK.建議樓主用比較新版本的MSSQL 例如2008,7.0這個版本太舊了..
sqlserver 動態(tài)表名
SqlServer還沒有這樣的功能。
你要是想得到好讀的代碼的話,在exec之前把生成的sql語句用select輸出一下不就行啦。
如果你在其它語言里面連接數(shù)據(jù)庫,如asp或桌面程序,要執(zhí)行之前把sql語句拼好,就用不到exec了。
SQLSERVER 兩表生成動態(tài)交叉表?
--靜態(tài)SQL
select [商品款號],[品名],[采購價],[零售單價],[顏色],[碼系],
case [序號] when 0 then [數(shù)量] else null end "0",
case [序號] when 1 then [數(shù)量] else null end "1",
case [序號] when 2 then [數(shù)量] else null end "2",
case [序號] when 3 then [數(shù)量] else null end "3",
case [序號] when 4 then [數(shù)量] else null end "4"
from [出入庫明細]
--動態(tài)SQL
declare @sql varchar(8000)
set @sql = 'select [商品款號],[品名],[采購價],[零售單價],[顏色],[碼系]'
select @sql = @sql + ' , case [序號] when ' + seq + ' then [數(shù)量] else 0 end "' + seq + '"'
from (select distinct cast([序號] as varchar) seq from [出入庫明細]) as a
set @sql = @sql + ' from [出入庫明細]'
print @sql
exec(@sql)
sqlserver動態(tài)表名查詢
因為表名是根據(jù)月份來創(chuàng)建的,所以創(chuàng)建視圖需要利用參數(shù)作為表名進行查詢
可以再加一個語句判斷表是否存在
網(wǎng)頁名稱:sqlserver動態(tài)表,sqlserver動態(tài)sql語句
文章路徑:http://www.dlmjj.cn/article/hdoeii.html