最近在做乙個paypal抓取資料的程式,由於所有欄位和paypal之間存在對應對映的關係,所以所有的sql語句必須得拼接傳到儲存過程裡去執行,
alter proc [dbo].[sp_common_paypal_addinfo]
(@paypalsql varchar(max),--不包含使用者表的paypalsql語句
@paypalusersql varchar(max),--paypal使用者表的sql語句
@ebaysql varchar(max),--不包含使用者表的ebaysql語句
@ebayusersql varchar(max),--ebay的使用者表sql語句
@paypaluserwhere varchar(max),--paypal使用者表查詢id語句
@ebayuserwhere varchar(max),--ebay使用者表查詢id語句
@websql varchar(max),--web除去使用者表的sql語句
@webusersql varchar(max),--web使用者表的sql語句
@webwhere varchar(max),--web使用者表where之後的sql語句
@ebaystockflag varchar(10),--ebay訂單號生成規則
@webstockflag varchar(10)--web訂單號生成規則)as
set xact_abort on
begin transaction mytrans
begin try
declare @uid int--根據語句查詢使用者id
declare @execsql varchar(max)
declare @ebayuid int--根據語句查詢使用者id
declare @execebaysql nvarchar(max)--用sp_executesql 字段型別必須是nvarchar
declare @sql nvarchar(max)--用sp_executesql 字段型別必須是nvarchar
set @sql='select @a=id from tb_transactioncustomer where '+ convert(varchar(8000),@paypaluserwhere)
exec sp_executesql @sql,n'@a int output',@uid output
set @uid =isnull(@uid,0)--如果不這樣判斷 獲取的值可能為null用len()獲取不到長度
--存在paypal使用者id
if(@uid>0)
begin
set @execsql=@paypalsql-- 存在使用者資訊
set @execsql= replace(@execsql,'@uid',''+convert(varchar,@uid)+'')
endelse
begin
set @execsql=@paypalusersql+@paypalsql --不存在使用者資訊
endif(len(@websql)>0)--執行web語句
begin
exec sp_common_websiteorder_addinfo @websql, @webusersql, @webwhere ,@webstockflag
endif(len(@ebaysql)>0)--執行ebay語句
begin
--exec sp_common_ebay_addinfo @ebaysql, @ebayusersql, @ebayuserwhere ,@ebaystockflag
select * from tb_ebayorder with (tablockx)
select * from tb_ebayorderlist with (tablockx)
select * from tb_ebayorderuserinfo with (tablockx)
set @sql='select @b=id from tb_ebayorderuserinfo where '+ convert(varchar(8000),@ebayuserwhere)
exec sp_executesql @sql,n'@b int output',@ebayuid output
set @ebayuid =isnull(@ebayuid,0)
if(@ebayuid>0)
begin
set @execebaysql=@ebaysql--存在ebayuid
set @execebaysql= replace(@execebaysql,'@ebayuid',''+convert(varchar,@ebayuid)+'')--必須替換 否則會報錯誤說必須宣告標量變數
endelse
begin
set @execebaysql=@ebayusersql+@ebaysql --不存在ebayuid
endset @execebaysql= replace(@execebaysql,'@00',dbo.getordernum(@ebaystockflag))--呼叫函式替換訂單編號
exec (@execebaysql)
endexec(@execsql)
end try
begin catch
if(@@trancount>0)
rollback transaction mytrans
end catch
if(@@trancount>0)
begin
commit transaction mytrans
endelse begin
rollback transaction mytrans
end
從動態SQL中返回值
declare transactorid int set transactorid 0 print transactorid execsp execute sqln select transactorid 68 n transactoridint transactorid execsp execut...
dpkg l 命令返回數值
dpkg l 每條記錄對應乙個軟體包,每條記錄的第一,二,三個字元是軟體包的狀態標識,後邊依此時軟體包名稱,版本號,和簡述 第乙個字元為,期望值 包括如下狀態 u 狀態未知 意味軟體包未安裝,並且使用者也未發出安裝請求 i 使用者請求安裝軟體包 r 使用者請求解除安裝軟體包 p 使用者請求清楚軟體包...
sql數值求和
實際 select sum shuliang sum danjia sum jine as 單價 sum danjia as 單價,sum jine as 金額 from ang dbo myshucai 1 對列求和可以使用聚合函式sum,例如 select sum 金額 as 合計 from 表...