動態SQL中返回數值的實現代碼建站知識
導讀:1建站知識最近在做一個paypal抓取數據的程序,由于所有字段和paypal之間存在對應映射的關系,所以所有的sql語句必須得拼接傳如何seo優化推廣網站網站建設制作。
復制代碼 代碼如下:
ALTER proc [dbo].[sp_common_paypal_AddInfo] ( @paypalsql varchar(max),--不包含用戶表的paypalsql語句 @paypalusersql varchar(max),--paypal用戶表的sql語句 @ebaysql varchar(max),--不包含用戶表的網站seo優化軟件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)+'') end else begin set @execsql=@paypalusersql+@paypalsql --不存在用戶信息 end if(LEN(@websql)>0)--執行web語句 begin exec sp_common_WebSiteorder_AddInfo @websql, @webusersql, @webwhere ,@webstockflag end if(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)+'')--必須替換 否則會報錯誤說必須聲明標量變量 end else begin set @execebaysql=@ebayusersql+@ebaysql --不存在ebayuid end set @execebaysql= REPLACE(@execebaysql,'@00',dbo.GetOrderNum(@ebaystockflag))--調用函數替換訂單編號 exec (@execebaysql) end exec(@execsql) end try begin catch if(@@TRANCOUNT>0) rollback transaction mytrans end catch if(@@TRANCOUNT>0) begin commit transaction mytrans end else begin rollback transaction mytrans end
聲明: 本文由我的SEOUC技術文章主頁發布于:2023-05-21 ,文章動態SQL中返回數值的實現代碼建站知識主要講述數值,代碼,SQL網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_3788.html