999国内精品永久免费视频,色偷偷9999www,亚洲国产成人爱av在线播放,6080亚洲人久久精品,欧美超高清xxxhd

首頁(yè) 新聞 工控搜 論壇 廠商論壇 產(chǎn)品 方案 廠商 人才 文摘 下載 展覽
中華工控網(wǎng)首頁(yè)
  P L C | 變頻器與傳動(dòng) | 傳感器 | 現(xiàn)場(chǎng)檢測(cè)儀表 | 工控軟件 | 人機(jī)界面 | 運(yùn)動(dòng)控制
  D C S | 工業(yè)以太網(wǎng) | 現(xiàn)場(chǎng)總線 | 顯示調(diào)節(jié)儀表 | 數(shù)據(jù)采集 | 數(shù)傳測(cè)控 | 工業(yè)安全
  電 源 | 嵌入式系統(tǒng) | PC based | 機(jī)柜箱體殼體 | 低壓電器 | 機(jī)器視覺
存儲(chǔ)過程在紫金橋軟件的應(yīng)用
紫金橋軟件技術(shù)有限公司
收藏本文     查看收藏

我們都知道,在紫金橋軟件中可以通過腳本或報(bào)表來訪問關(guān)系庫(kù)系統(tǒng)。我們通常的訪問方式大概如下(以報(bào)表訪問關(guān)系庫(kù)為例):

  • 建立報(bào)表關(guān)系數(shù)據(jù)源點(diǎn),配置關(guān)系數(shù)據(jù)源點(diǎn)連接的數(shù)據(jù)庫(kù)用戶名和密碼等屬性。
  • 繪制報(bào)表,在報(bào)表的關(guān)系數(shù)據(jù)庫(kù)連接中指明第一步建立的報(bào)表關(guān)系數(shù)據(jù)源點(diǎn)。
  • 在報(bào)表上寫對(duì)關(guān)系庫(kù)操作的命令,比如SELECT命令。
  • 在報(bào)表中對(duì)關(guān)系庫(kù)返回的結(jié)果進(jìn)行處理,最簡(jiǎn)單的是報(bào)表自動(dòng)顯示結(jié)果。

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

#R.SqlExeCmdNoRet("EXEC DOTRANCDATA");

這里的EXEC DOTRANCDATA表示執(zhí)行DOTRANCDATA這個(gè)存儲(chǔ)過程。

下面我們通過一個(gè)簡(jiǎn)單的例子來說明一下存儲(chǔ)過程的用法。

比如我們需要做一個(gè)產(chǎn)品出入庫(kù)的項(xiàng)目,產(chǎn)品在某一個(gè)地方通過驅(qū)動(dòng)或條碼設(shè)備自動(dòng)進(jìn)行入庫(kù)操作,當(dāng)數(shù)據(jù)進(jìn)入關(guān)系庫(kù)之后,可以通過關(guān)系庫(kù)的各種統(tǒng)計(jì)分析查詢功能來對(duì)產(chǎn)品進(jìn)行統(tǒng)計(jì)和檢索,由于需要在多個(gè)地方進(jìn)行檢索,所以SQL數(shù)據(jù)庫(kù)放在遠(yuǎn)端網(wǎng)絡(luò)的一個(gè)服務(wù)器上。

但是這里存在這么一個(gè)問題,由于網(wǎng)絡(luò)有可能會(huì)偶爾出現(xiàn)故障,雖然在故障情況下暫時(shí)不能查詢是可以理解的,但是我們不能允許在網(wǎng)絡(luò)出現(xiàn)故障的情況下,產(chǎn)品不能入庫(kù)。

這種問題可以這么解決,在本地關(guān)系庫(kù)中建立一個(gè)緩沖表,數(shù)據(jù)先插入本地的緩沖表中,然后通過存儲(chǔ)過程,把本地的緩沖表中的數(shù)據(jù)移動(dòng)到遠(yuǎn)端的產(chǎn)品庫(kù)中。在本地的任何檢索和查詢都是針對(duì)的遠(yuǎn)端的產(chǎn)品庫(kù)來進(jìn)行。這樣當(dāng)網(wǎng)絡(luò)中斷的時(shí)候,數(shù)據(jù)就可以先緩沖到本地,此時(shí)產(chǎn)品的入庫(kù)工作仍然可以順利的進(jìn)行,只不過本地的數(shù)據(jù)無法自動(dòng)的移動(dòng)到遠(yuǎn)端,此時(shí)在遠(yuǎn)端的數(shù)據(jù)庫(kù)中是無法檢索到這些入庫(kù)的產(chǎn)品的。當(dāng)網(wǎng)絡(luò)恢復(fù)之后,由存儲(chǔ)過程自動(dòng)的把數(shù)據(jù)移動(dòng)到遠(yuǎn)端數(shù)據(jù)庫(kù)中,此時(shí)在遠(yuǎn)端數(shù)據(jù)庫(kù)中就可以檢索到這些產(chǎn)品了。

下面我們舉一個(gè)簡(jiǎn)單的例子,為了簡(jiǎn)化說明我們的兩個(gè)表都在本地?cái)?shù)據(jù)庫(kù)中,首先數(shù)據(jù)插入其中的一個(gè)表中,然后在使用存儲(chǔ)過程移動(dòng)到另外一個(gè)表。對(duì)于跨數(shù)據(jù)庫(kù)的表,處理方式一樣,只需要稍微做些調(diào)整就行了。

首先我們?cè)赟QL中建立兩個(gè)表,名為“測(cè)試數(shù)據(jù)源”和“測(cè)試目標(biāo)”,如下圖所示:

在測(cè)試數(shù)據(jù)源和測(cè)試目標(biāo)中建立結(jié)構(gòu)相同的兩個(gè)數(shù)據(jù)表,如下圖所示:

這里是一個(gè)簡(jiǎn)單的人員入庫(kù)表,表明為User,有三個(gè)字段,第一個(gè)是自動(dòng)增長(zhǎng)的ID,第二個(gè)是人名,第三個(gè)年齡。

我們?cè)谧辖饦蛑袆?chuàng)建一個(gè)關(guān)系數(shù)據(jù)源點(diǎn),讓該點(diǎn)連接“測(cè)試數(shù)據(jù)源”數(shù)據(jù)庫(kù),如下圖所示:

在紫金橋中創(chuàng)建一個(gè)窗口,并且創(chuàng)建一個(gè)報(bào)表,給報(bào)表關(guān)聯(lián)剛剛建立的報(bào)表關(guān)系數(shù)據(jù)源點(diǎn)。

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

給姓名和年齡的輸入位置設(shè)置相應(yīng)的輸入方式,給提交按鈕關(guān)聯(lián)如下的腳本:

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

即可把人員姓名和年齡插入數(shù)據(jù)庫(kù)中。

下面我們通過存儲(chǔ)過程來把數(shù)據(jù)從“測(cè)試數(shù)據(jù)源”庫(kù)移動(dòng)到“測(cè)試目標(biāo)”庫(kù)中。

在“測(cè)試數(shù)據(jù)源”庫(kù)中創(chuàng)建一個(gè)存儲(chǔ)過程,如下圖所示:

點(diǎn)擊確定即可創(chuàng)建存儲(chǔ)過程。

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

在此處輸入如下的代碼:

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 測(cè)試目標(biāo).dbo.[User](' + @str + ') SELECT ' + @str + ' FROM 測(cè)試數(shù)據(jù)源.dbo.[User]'

 

DECLARE Ptr CURSOR

FOR

SELECT ID FROM 測(cè)試數(shù)據(jù)源.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 測(cè)試數(shù)據(jù)源.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行代碼,是固定的,功能主要是更改存儲(chǔ)過程的內(nèi)容。

中間的內(nèi)容是移動(dòng)數(shù)據(jù),這里我們不能簡(jiǎn)單的這樣寫:

INSERT INTO 測(cè)試目標(biāo).dbo.[User] SELECT * FROM 測(cè)試數(shù)據(jù)源.dbo.[User]

因?yàn),兩個(gè)表中都有自動(dòng)增長(zhǎng)的字段ID,如果復(fù)制所有的內(nèi)容,也會(huì)導(dǎo)致復(fù)制ID字段的內(nèi)容,而這會(huì)打亂系統(tǒng)自動(dòng)增長(zhǎng)的規(guī)律,可能會(huì)導(dǎo)致執(zhí)行失敗。

 

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的字段的名稱,并用逗號(hào)分隔。

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

這一句代碼的功能是去除開始的逗號(hào)。

SET @str = 'INSERT INTO 測(cè)試目標(biāo).dbo.[User](' + @str + ') SELECT ' + @str + ' FROM 測(cè)試數(shù)據(jù)源.dbo.[User]'

這一句代碼生成復(fù)制數(shù)據(jù)的命令。

 

DECLARE Ptr CURSOR

FOR

SELECT ID FROM 測(cè)試數(shù)據(jù)源.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 測(cè)試數(shù)據(jù)源.dbo.[User] WHERE ID = @ID

END

FETCH NEXT FROM Ptr INTO @ID

END

CLOSE Ptr

DEALLOCATE Ptr

這一段代碼,使用了多個(gè)游標(biāo),逐行的復(fù)制數(shù)據(jù)和刪除數(shù)據(jù),以實(shí)現(xiàn)移動(dòng)數(shù)據(jù)的目的。

這里之所以采取一行一行的移動(dòng)數(shù)據(jù),主要是為了防止,在移動(dòng)數(shù)據(jù)的過程中,又有了新的人員入庫(kù),插入了新的記錄。一行一行的移動(dòng)可以使得復(fù)制數(shù)據(jù)和刪除數(shù)據(jù)可以一一對(duì)應(yīng)。

 

最后可以把此存儲(chǔ)過程放到作業(yè)中,使得它可以被周期運(yùn)行,就可以實(shí)現(xiàn)自動(dòng)的數(shù)據(jù)移動(dòng)了。


 

狀 態(tài): 離線

公司簡(jiǎn)介
產(chǎn)品目錄

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

關(guān)于我們 | 聯(lián)系我們 | 廣告服務(wù) | 本站動(dòng)態(tài) | 友情鏈接 | 法律聲明 | 不良信息舉報(bào)
工控網(wǎng)客服熱線:0755-86369299
版權(quán)所有 中華工控網(wǎng) Copyright©2022 Gkong.com, All Rights Reserved