程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> SQL中Print語句的煩惱

SQL中Print語句的煩惱

編輯:關於MYSQL數據庫

前幾天寫一個程序時,無意中遇到一個怪問題.

症狀描述如下:

一台聯想服務器上安裝了SQLSERVER服務,在其一個數據庫裡寫了一個存儲過程.此存儲過程接受一個參數,裡面的語句對參數進行判斷然後執行分支.

if @CustType=0

..................

else if @CustType=1

.......................

else

...............


基本結構是這樣.

當我在開發的時候,用我的筆記本(康柏)上的程序連上服務器,程序裡用的ADO中的Recordset來處理.當執行到rs.open時一點問題也沒有.在服務器上也用此程序執行調用存儲過程也沒有問題,一切正常.

但是當用該單位的其他計算機(都是聯想),用同樣的程序訪問時,當執行到存儲過程中第一種情況時,所有的窗體都自動關閉,也沒有任何的異常出現.

還有一種特別的情況存在,因為這個問題以前在其中一台聯想機上有過,後來我去查看這個問題,查不出原因.於是我在這台計算機上安裝了VS6,現場調試,可是我調試時一切正常,過了一個月後,又出現原來的問題(窗體全關閉)

這下問題大了.同樣的程序在不同的計算機上執行時有時正常有時不正常,程序我相信絕對沒有錯.我想可能是計算機配置有問題.於是當一台計算機重做了,再試,還是不行.

想想會不會是SP沒打,又會了近二個小時把所有的SP安裝好.還是不正常. 再安裝VS6,也沒有用. 問題到底在哪裡呢.我仔細想想,我曾想到會不會是聯想的破機器有問題,會不會是他的CPU指令不對.(因為機器比較舊一點,再說在其他計算機上從來不出現這種問題). 我試著將程序中第一種情況的值改變一下,本來是0,改成3 這樣沒有問題.於是我將存儲過程中的if @CustType=0 改成 if @CustType=3.問題又出現了. 會不會問題出現在這個分支,裡面的邏輯肯定都是對的.看到此分支最後有一行代碼,此代碼是調試時用的.用來查看存儲過程執行時,扭虧為執行了什麼語句,也就是一句print (@SqlStr),會不會是這語句引起的.將其注釋了).打開程序再試. 在刀有的計算機上通過.

原來這個問題是print語句引起的.怪就怪在有的客戶端執行時不會有問題.,而出現問題時又不報任何異常,只是將客戶端窗體自動關閉.看來以後寫程序時一定要注意這個問題.要將調試代碼清理掉. 害得我白白花了近一天的時間.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved