SQL中Print语句的烦恼

语句

前几天写一个程序时,无意中遇到一个怪问题.

症状描述如下:

一台联想服务器上安装了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语句引起的.怪就怪在有的客户端执行时不会有问题.,而出现问题时又不报任何异常,只是将客户端窗体自动关闭.看来以后写程序时一定要注意这个问题.要将调试代码清理掉. 害得我白白花了近一天的时间.

时间: 2024-12-01 15:52:18

SQL中Print语句的烦恼的相关文章

Oracle中PL/SQL中if语句的写法介绍

以下是对Oracle中PL/SQL中if语句的写法进行了详细的分析介绍,需要的朋友可以过来参考下   复制代码 代码如下: /* If语句: 判断用户输入的数字. */ set serveroutput on --接收键盘输入 accept num prompt '请输入一个数字:'; declare   --将屏幕输入的数字付给变量   pnum number := # begin   if pnum = 0 then dbms_output.put_line('您输入的是0');   end

sql 中select语句问题

问题描述 sql 中select语句问题 求问:在做C#程序中,我sql查询语句: select InvtID,Descr ,User2, User2 from (SELECT Inventory.InvtID, Inventory.Descr, Inventory.User2,IA.User2 FROM Inventory LEFT OUTER JOIN InventoryAdg IA ON Inventory.InvtID=IA.InvtID )v 问题是我需要查询两张表的User2字段,可

SQL中print、sp_helptext的限制与扩展

在SQL中,使用动态SQL是很常见的.有些复杂的计算,或是存储过程,代码很长,中间可能有多次执行SQL语句.而调试拼串的SQL语句却是件痛苦的事,很难看出来运行的语句是什么.所以我会经常使用print这个命令把运行前的语句打印到屏幕上,然后复制出来到另一个窗口进行调试.修改,这样就比较方便了.但是这个print命令有一些限制,在单字节符集下,最大只能打印打印8000个字符的长度,而在双字节字符集是4000个. 以下存储过程可以打印完整的信息,不受长度的限制.代码如下: IF OBJECT_ID(

SQL SERVER PRINT语句如何换行

想在输出的PRINT语句里面换行,可以这样做 /* SQL的换行 制表符 CHAR(9) 换行符 CHAR(10) 回车 CHAR(13) */ PRINT 'Test'+CHAR(13)+'Name' PRINT 'Test'+CHAR(10)+'Age' PRINT 'Test'+CHAR(9)+'Tel' --以文本格式显示结果 SELECT 'AAA'+ CHAR(10)+'BBB'--AAA BBB SELECT 'AAA'+ CHAR(13)+'BBB'--AAA BBB SELEC

sql中case语句的用法浅谈_MsSql

SQL中Case的使用方法 Case具有两种格式.简单Case函数和Case搜索函数. 复制代码 代码如下: --简单Case函数 CASE sex          WHEN '1' THEN '男'          WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男'          WHEN sex = '2' THEN '女' ELSE '其他' END 这两种方式,可以实现相同的功能.简单Ca

sql中case语句的用法浅谈

SQL中Case的使用方法 Case具有两种格式.简单Case函数和Case搜索函数.复制代码 代码如下:--简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END 这两种方式,可以实现相同的功能.简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功

Oracle中PL/SQL中if语句的写法介绍_oracle

复制代码 代码如下: /*If语句:判断用户输入的数字.*/set serveroutput on --接收键盘输入accept num prompt '请输入一个数字:'; declare   --将屏幕输入的数字付给变量  pnum number := #begin  if pnum = 0 then dbms_output.put_line('您输入的是0');  end if;   if pnum = 1 then dbms_output.put_line('您输入的是1'); 

sql中的select语句执行属性问题

问题描述 sql中的select语句执行属性问题 SELECT orders.*, (SELECT username FROM USER WHERE orders.user_id = user.id)username, (SELECT sex FROM USER WHERE orders.user_id = user.id)sex FROM orders 下面这个语句 的执行顺序是啥 这个语句这样写感觉好奇怪 有没有对sql比较懂得大神 解决方案 先执行子查询,然后结果保留,然后执行外部查询进行

SQLServer中SELECT语句的执行顺序

今天在写一条语句的时候,在查询分析器里边执行 要用10s,换用另外一种写法只用少于1s的时间,同事说是因为Sql句语执行顺序的原因.之前看过一点相 关的书,有一点印象,到网上找了资料,学习下. 逻辑查询处理步骤 复制代码 代码如下: (8)SELECT (9)DISTINCT (11)<TOP_specification> <select_list> (1)FROM <left_table> (3) <join_type> JOIN <right_ta