在原有的表中新增加了一列,但是在存储过程中却不能识别这个列,是怎么回事。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在原有的表中新增加了一列,但是在存储过程中却不能识别这个列,是怎么回事。相关的知识,希望对你有一定的参考价值。

以前存在一个存储过程,可以更新表中的一些字段。现在我在原来的表中新加了一列,想在原来的存储过程中,也更新这个列的数据,可是,存储过程中总是提示这个列无效,就是无法识别这个列。不知道是怎么回事,是在表中设置新增加的列的属性才能让存储过程识别,还是在存储过程中做某些设置可以识别到这个新增加的列?sqlserver2012,希望各位高手帮忙解决一下。。
代码如下:
begin update GSP_PTYPZKYH_HZ set is_zx = '是' from GSP_PTYPZKYH_HZ a inner join tmp_bill_GSP_KFYH_ZYZKYH_dssub1 b on a.djbh = b.djbh and b.GZID = @gzid if @@error<>0 or @@rowcount = 0 begin set @return=2 goto err_lab end
提示is_zx列名无效。

参考技术A

 跟那些没关啊,,,

你先验证下吧,,,

首先

select top 1 is_zx from GSP_PTYPZKYH_HZ

这样,看能查吗,如果能,说明字段加上了,就说明是你的过程的问题;

如果上面没问题,把这段再改下试试

  update a  set  a.is_zx = '是'
 from GSP_PTYPZKYH_HZ a inner join tmp_bill_GSP_KFYH_ZYZKYH_dssub1 b

追问

现在是这个状态 :虽然查询没有什么问题,但是依然显示列明无效。晕了!

追答

改成我那个更新语句试试

追问

还是同样的问题,提示列明无效,但是直接在数据库中执行这个存储过程,可以正常执行。

追答

直接在数据库中执行这个存储过程,可以正常执行。什么意思?
你不是不能alter 那个过程,提示字段无效吗,怎么又能执行了

追问

就向上个图一样,虽然提示这个列明无效,但是查询语句依然可以正常的执行。直接执行存储过程也可以正常的执行,但是我程序调用这个存储过程的时候还是会出错。

追答

你的意思是你在数据库里已经没问题了,在程序调用数据库过程的时候会报错?

参考技术B 提示这个列无效,不一定是不能识别这个列。
可能是其它的一些语法错误
你可以简单的自己写个存储过程或者sql语句测试一下。
参考技术C 我也遇到这个问题了 解决了吗? 通过plsql中通过编辑表 新增的四个列 在存储过程里编译时提示无效,拿出来在sql窗口中直接执行就没问题,只有在存储过程中不行

如何在sql数据库表里加入新的一列(表里原有数据)

先修改表,允许之前各列可以为空,再去删掉了原数据。但在添加完一列后提示不能保存,跳出了这个

求高手看看那

因为userid字段限定为不可为空,插入空数据,造成报错。

在数据库表中,查询新列的sql示例如下,

1、创建测试表,create table test_num(id number, fee number(10,3));

2、查看表的属性,共包含两列,ID、FEE,

3、执行sql语句,插入新字段,alter table test_num add (fee2 number(10,3));

4、重新查看表结构,字段已加上,

参考技术A

1、首先在桌面双击“SQL Server 2008R2”的图标,点击进入它的管理界面,如下图所示。

2、在里面找到“数据库”菜单,右键这个选项,找到“附加数据库”,点击这个选项,如图所示。

3、来到“附加数据库”的界面,点击“添加”按钮,即可跳转到本地电脑里面的文件选择项,如图所示。

4、然后在自己的本地电脑里面找到刚刚需要附加的数据库文件,找到“.mdf”文件,点击附加。

5、这时新的数据就附加到我数据库里面了。

参考技术B 不需要删除原有数据,
直接alter table 表名 add 列名 数据类型
参考技术C 用SQL语句试一下。

alter table tmp_tb_user add Userid int
类似这样的语句,你根据实际情况修改一下。
参考技术D 你新添加的那列userid才是真正应该设置为可空的,但是你怎么不勾呢?追问

后来我勾了,但是写数据进去又报错了

追答

是这样的,在编辑模式下sqlserver不允许有两行相同,你先按ESC取消了,然后删除所有行,如果删不掉就用delete语句删除,然后再一行一行地填,注意决不能有两行数据完全一致!

本回答被提问者采纳

以上是关于在原有的表中新增加了一列,但是在存储过程中却不能识别这个列,是怎么回事。的主要内容,如果未能解决你的问题,请参考以下文章

mysql批量增加表中新列存储过程

C# 在 DataGridView 里 增加了一列 CheckBoxColumn ,怎么点击后不能打钩啊?如何设置?

sql server如何将字段添加到第一列

mysql 存储过程

如何在sql数据库表里加入新的一列(表里原有数据)

sqlserver2005 表A跟存储过程B存在依赖关系,我为表A添加了一列C,修改存储过程B时报错说列C不存在。