<style id="7i3y3"></style>

      <sub id="7i3y3"><i id="7i3y3"></i></sub>

        午夜精品一区二区三区成人,中文字幕av一区二区,亚洲AVAV天堂AV在线网阿V,肥臀浪妇太爽了快点再快点,国产网友愉拍精品视频手机,国产精品无码a∨麻豆,久久中文字幕一区二区,a级国产乱理伦片在线观看al
        首頁 新聞 工控搜 論壇 廠商論壇 產品 方案 廠商 人才 文摘 下載 展覽
        中華工控網首頁
          P L C | 變頻器與傳動 | 傳感器 | 現場檢測儀表 | 工控軟件 | 人機界面 | 運動控制
          D C S | 工業以太網 | 現場總線 | 顯示調節儀表 | 數據采集 | 數傳測控 | 工業安全
          電 源 | 嵌入式系統 | PC based | 機柜箱體殼體 | 低壓電器 | 機器視覺
        存儲過程在紫金橋軟件的應用
        紫金橋軟件技術有限公司
        收藏本文     查看收藏

        我們都知道,在紫金橋軟件中可以通過腳本或報表來訪問關系庫系統。我們通常的訪問方式大概如下(以報表訪問關系庫為例):

        • 建立報表關系數據源點,配置關系數據源點連接的數據庫用戶名和密碼等屬性。
        • 繪制報表,在報表的關系數據庫連接中指明第一步建立的報表關系數據源點。
        • 在報表上寫對關系庫操作的命令,比如SELECT命令。
        • 在報表中對關系庫返回的結果進行處理,最簡單的是報表自動顯示結果。

        這里第3步的SELECT命令中可以訪問SQL中的表或視圖。另外也可以使用存儲過程,比如:

        #R.SqlExeCmdNoRet("EXEC DOTRANCDATA");

        這里的EXEC DOTRANCDATA表示執行DOTRANCDATA這個存儲過程。

        下面我們通過一個簡單的例子來說明一下存儲過程的用法。

        比如我們需要做一個產品出入庫的項目,產品在某一個地方通過驅動或條碼設備自動進行入庫操作,當數據進入關系庫之后,可以通過關系庫的各種統計分析查詢功能來對產品進行統計和檢索,由于需要在多個地方進行檢索,所以SQL數據庫放在遠端網絡的一個服務器上。

        但是這里存在這么一個問題,由于網絡有可能會偶爾出現故障,雖然在故障情況下暫時不能查詢是可以理解的,但是我們不能允許在網絡出現故障的情況下,產品不能入庫。

        這種問題可以這么解決,在本地關系庫中建立一個緩沖表,數據先插入本地的緩沖表中,然后通過存儲過程,把本地的緩沖表中的數據移動到遠端的產品庫中。在本地的任何檢索和查詢都是針對的遠端的產品庫來進行。這樣當網絡中斷的時候,數據就可以先緩沖到本地,此時產品的入庫工作仍然可以順利的進行,只不過本地的數據無法自動的移動到遠端,此時在遠端的數據庫中是無法檢索到這些入庫的產品的。當網絡恢復之后,由存儲過程自動的把數據移動到遠端數據庫中,此時在遠端數據庫中就可以檢索到這些產品了。

        下面我們舉一個簡單的例子,為了簡化說明我們的兩個表都在本地數據庫中,首先數據插入其中的一個表中,然后在使用存儲過程移動到另外一個表。對于跨數據庫的表,處理方式一樣,只需要稍微做些調整就行了。

        首先我們在SQL中建立兩個表,名為“測試數據源”和“測試目標”,如下圖所示:

        在測試數據源和測試目標中建立結構相同的兩個數據表,如下圖所示:

        這里是一個簡單的人員入庫表,表明為User,有三個字段,第一個是自動增長的ID,第二個是人名,第三個年齡。

        我們在紫金橋中創建一個關系數據源點,讓該點連接“測試數據源”數據庫,如下圖所示:

        在紫金橋中創建一個窗口,并且創建一個報表,給報表關聯剛剛建立的報表關系數據源點。

        在報表上允許用戶輸入姓名和年齡,如下圖所示:

        給姓名和年齡的輸入位置設置相應的輸入方式,給提交按鈕關聯如下的腳本:

        SqlExeCmdNoRet("INSERT INTO [User](Name, [Year]) VALUES ('"+Txt(1,1)+"', "+Txt(2,1)+")");

        即可把人員姓名和年齡插入數據庫中。

        下面我們通過存儲過程來把數據從“測試數據源”庫移動到“測試目標”庫中。

        在“測試數據源”庫中創建一個存儲過程,如下圖所示:

        點擊確定即可創建存儲過程。

        打開SQL查詢分析器,選中相應的存儲過程,右鍵菜單選擇編輯功能,如下圖所示:

        在此處輸入如下的代碼:

        SET QUOTED_IDENTIFIER ON

        GO

        SET ANSI_NULLS OFF

        GO

        ALTERPROCEDURE MoveDataAS

         

        DECLARE @strVARCHAR(1000)

        DECLARE @SqlstrVARCHAR(1000)

        SET @str = ''

        SELECT @str=@str+','+syscolumns.[name] FROM syscolumns WHERE syscolumns.id=object_id('User') and syscolumns.[name]<>'ID'

        SET @str = stuff(@str,1,1,'')

        SET @str = 'INSERT INTO 測試目標.dbo.[User](' + @str + ') SELECT ' + @str + ' FROM 測試數據源.dbo.[User]'

         

        DECLARE Ptr CURSOR

        FOR

        SELECT ID FROM 測試數據源.dbo.[User]

        OPEN Ptr

        DECLARE @ID INT

         

        FETCH NEXT FROM Ptr INTO @ID

        WHILE (@@FETCH_STATUS <> -1)

        BEGIN

        IF (@@FETCH_STATUS <> -2)

        BEGIN

        SET @Sqlstr = @str + ' WHERE ID=' + CONVERT(varchar, @ID)

        EXEC(@Sqlstr)

        DELETE FROM 測試數據源.dbo.[User] WHERE ID = @ID

        END

        FETCH NEXT FROM Ptr INTO @ID

        END

        CLOSE Ptr

        DEALLOCATE Ptr

         

        GO

        SET QUOTED_IDENTIFIER OFF

        GO

        SET ANSI_NULLS ON

        GO

        其中前面和后面5行代碼,是固定的,功能主要是更改存儲過程的內容。

        中間的內容是移動數據,這里我們不能簡單的這樣寫:

        INSERT INTO 測試目標.dbo.[User] SELECT * FROM 測試數據源.dbo.[User]

        因為,兩個表中都有自動增長的字段ID,如果復制所有的內容,也會導致復制ID字段的內容,而這會打亂系統自動增長的規律,可能會導致執行失敗。

         

        DECLARE @strVARCHAR(1000)

        DECLARE @SqlstrVARCHAR(1000)

        SET @str = ''

        SELECT @str=@str+','+syscolumns.[name] FROM syscolumns WHERE syscolumns.id=object_id('User') and syscolumns.[name]<>'ID'

        SET @str = stuff(@str,1,1,'')

        這一段代碼,查詢User表中的所有名稱不為ID的字段的名稱,并用逗號分隔。

        SET @str = stuff(@str,1,1,'')

        這一句代碼的功能是去除開始的逗號。

        SET @str = 'INSERT INTO 測試目標.dbo.[User](' + @str + ') SELECT ' + @str + ' FROM 測試數據源.dbo.[User]'

        這一句代碼生成復制數據的命令。

         

        DECLARE Ptr CURSOR

        FOR

        SELECT ID FROM 測試數據源.dbo.[User]

        OPEN Ptr

        DECLARE @ID INT

         

        FETCH NEXT FROM Ptr INTO @ID

        WHILE (@@FETCH_STATUS <> -1)

        BEGIN

        IF (@@FETCH_STATUS <> -2)

        BEGIN

        SET @Sqlstr = @str + ' WHERE ID=' + CONVERT(varchar, @ID)

        EXEC(@Sqlstr)

        DELETE FROM 測試數據源.dbo.[User] WHERE ID = @ID

        END

        FETCH NEXT FROM Ptr INTO @ID

        END

        CLOSE Ptr

        DEALLOCATE Ptr

        這一段代碼,使用了多個游標,逐行的復制數據和刪除數據,以實現移動數據的目的。

        這里之所以采取一行一行的移動數據,主要是為了防止,在移動數據的過程中,又有了新的人員入庫,插入了新的記錄。一行一行的移動可以使得復制數據和刪除數據可以一一對應。

         

        最后可以把此存儲過程放到作業中,使得它可以被周期運行,就可以實現自動的數據移動了。


         

        狀 態: 離線

        公司簡介
        產品目錄

        公司名稱: 紫金橋軟件技術有限公司
        聯 系 人: 李磊
        電  話: 0459-8151391-808
        傳  真: 0459-8151391-804
        地  址: 大慶市高新區服務外包產業園C-1座817室
        郵  編: 163316
        主  頁:
         
        該廠商相關技術文摘:
        跨平臺實時數據庫變量引用導航功能介紹
        跨平臺實時數據庫 如何利用MODBUS仿真軟件測試MODBUS驅動
        紫金橋跨平臺實時數據庫如何實現多屏顯示
        紫金橋跨平臺軟實時數據庫Web服務器和數據服務器分離訪問的配置
        紫金橋跨平臺軟件遠程采集RealInfo6.5
        使用虛擬機做的工程實現跨網Web訪問
        紫金橋軟件Microsoft Office Access 2003的ODBC數據源配置
        紫金橋軟件閘門整體自動化監控系統
        通過紫金橋軟件來提高畫面組態速度
        組態軟件在配套設備中的應用
        紫金橋的關系庫同步工具簡介
        紫金橋組態軟件與歐姆龍PLC以太網通信(FINS命令)——CPU型號-CJ2M-CPU33
        更多文摘...
        立即發送詢問信息在線聯系該技術文摘廠商:
        用戶名: 密碼: 免費注冊為中華工控網會員
        請留下您的有效聯系方式,以方便我們及時與您聯絡

        關于我們 | 聯系我們 | 廣告服務 | 本站動態 | 友情鏈接 | 法律聲明 | 不良信息舉報
        工控網客服熱線:0755-86369299
        版權所有 中華工控網 Copyright©2022 Gkong.com, All Rights Reserved

        主站蜘蛛池模板: 国产自产视频一区二区三区| 男人天堂亚洲天堂女人天堂| 日韩中文字幕人妻一区| 国产69堂免费视频| 成在人线av无码免费看网站直播| 亚洲国产色一区二区三区| 99精品国产一区二区| 国产又色又爽又黄的视频在线 | 日本视频高清一道一区| 九九视频热最新在线视频| 午夜福利日本一区二区无码| 一级做a爰片在线播放| 男人添女人下部高潮视频| 精品99在线黑丝袜| 日韩人妻无码一区二区三区99| 亚洲人成亚洲人成在线观看| 久久狠狠一本精品综合网| 女人喷水高潮时的视频网站| 亚洲精品一区久久久久一品av| 国产99视频精品免视看9| 亚洲综合av一区二区三区| 午夜成人无码免费看网站| 美腿少妇资源在线网站| 成人午夜福利精品一区二区| 风韵丰满妇啪啪区老老熟女杏吧 | 亚洲狠狠爱一区二区三区| 国产精品男人的天堂| 亚洲中文一区二区av| 狠狠躁夜夜躁无码中文字幕 | 亚洲欧洲日产国码无码久久99| 一级毛片网| 性饥渴少妇AV无码毛片| 91麻豆国产精品91久久久| 亚洲精品一区二区妖精| av在线播放无码线| 亚洲成人高清av在线| 少妇顶级牲交免费在线| 激情人妻自拍中文夜夜嗨| 久久久久无码中| 国内偷自第一区二区三区| 无码人妻斩一区二区三区 |