关于使用sql存储过程中遇到的问题
程序出错,提示@outurl需要一个参数
也就是说,不能输入一个空值
那么我要怎么设置才可以让它接受一个空值?
问题点数:30、回复次数:13Top
1 楼foolnet(foolnet)回复于 2005-02-04 13:44:51 得分 0
试试 =DataType.DbNull
Top
2 楼liulxmooo(娃娃)回复于 2005-02-04 13:49:07 得分 0
upTop
3 楼shidabbs(开心就好)回复于 2005-02-04 14:00:08 得分 0
是修改Vb.net中的代码,还是修改Sql存储过程的代码?
@outurl等列都是需要保存的,只是要设置为允许用户输入空值。Top
4 楼hs_tang7788(hs_tang)回复于 2005-02-04 14:02:16 得分 0
试试在存储过程中定义 @outurl=nullTop
5 楼fangwancong(聪头.珠海)回复于 2005-02-04 14:07:00 得分 0
用楼上的就可以啦。。
试试在存储过程中定义 @outurl=null
Top
6 楼snowpine999([彼岸烟花][当你看到☆河灿烂,可会想起我?])回复于 2005-02-04 14:07:05 得分 0
upTop
7 楼qzb0818(漂来漂去)回复于 2005-02-04 14:17:19 得分 0
应该是设计表时@outurl对应的列允许null就可以了吧,
调用存储过程时只要声明了参数@outurl就可以了,传null也是可以的Top
8 楼wang2855()回复于 2005-02-04 14:35:50 得分 0
试试在存储过程中定义 @outurl=null
我们都是这样用的Top
9 楼shidabbs(开心就好)回复于 2005-02-04 15:41:00 得分 0
具体是在哪个地方呢……
CREATE PROCEDURE [Art_Topic_insert]
(@ClassId_1 [int],
@BeOrder_2 [int],
@Title_3 [varchar](255),
@Content_4 [ntext],
@isShowRe_5 [bit],
@TitlePicUrl_6 [varchar](255),
@SubjectId_7 [int],
@OutUrl_8 [varchar](255),
@Summary_9 [ntext],
@isA_10 [bit],
@isHighLight_11 [bit],
@isClassTop_12 [bit],
@isIndexTop_13 [bit],
@isAllowRe_14 [bit],
@KeywordId_15 [varchar](255),
@Author_16 [varchar](50),
@ContactTheWay_17 [varchar](255),
@Source_18 [varchar](100),
@SourceUrl_19 [varchar](255),
@UserName_20 [varchar](20),
@UserId_21 [int],
@UserIp_22 [varchar](20),
@isBlog_23 [bit],
@BlogId_24 [bit],
@UseTable_25 [varchar](20),
@isOk_26 [bit],
@TemplateId_27 [int])
AS
INSERT INTO [duoluojie].[dbo].[Art_Topic]
( [ClassId],
[BeOrder],
[Title],
[Content],
[isShowRe],
[TitlePicUrl],
[SubjectId],
[OutUrl],
[Summary],
[isA],
[isHighLight],
[isClassTop],
[isIndexTop],
[isAllowRe],
[KeywordId],
[Author],
[ContactTheWay],
[Source],
[SourceUrl],
[UserName],
[UserId],
[UserIp],
[isBlog],
[BlogId],
[UseTable],
[isOk],
[TemplateId])
VALUES
( @ClassId_1,
@BeOrder_2,
@Title_3,
@Content_4,
@isShowRe_5,
@TitlePicUrl_6,
@SubjectId_7,
@OutUrl_8,
@Summary_9,
@isA_10,
@isHighLight_11,
@isClassTop_12,
@isIndexTop_13,
@isAllowRe_14,
@KeywordId_15,
@Author_16,
@ContactTheWay_17,
@Source_18,
@SourceUrl_19,
@UserName_20,
@UserId_21,
@UserIp_22,
@isBlog_23,
@BlogId_24,
@UseTable_25,
@isOk_26,
@TemplateId_27)
Top
10 楼atliu(好好学习、天天向上)回复于 2005-02-04 15:45:38 得分 0
CREATE PROCEDURE [Art_Topic_insert]
(@ClassId_1 [int],
@BeOrder_2 [int],
@Title_3 [varchar](255),
@Content_4 [ntext],
@isShowRe_5 [bit],
@TitlePicUrl_6 [varchar](255),
@SubjectId_7 [int],
@OutUrl_8 [varchar](255),------------------在这里啦Top
11 楼mazekui(悠悠春竹)回复于 2005-02-04 15:50:59 得分 0
在as后面一行就是insert前一行加上
if @OutUrl_8 is null
set @OutUrl_8=''
就可以了Top
12 楼slhuang(★Shawn★)回复于 2005-02-05 00:28:19 得分 0
1, 用存储过程默认参数,比如
create procedure testproc
@pram1 int = 1
as
……
go
2, 前台传一个空值过去,比如
YourParam.Value = DBNull.Value;Top
13 楼ldljlq(越搞越不明白)回复于 2005-02-05 02:49:34 得分 30
CREATE PROCEDURE [Art_Topic_insert]
(@ClassId_1 [int]=null,
@BeOrder_2 [int]=null,
@Title_3 [varchar]=null(255),
在类型后面加上“=默认值”,默认值看你的需要来,如@classid_1 int=0
另外输出参数也可以设置默认值的,如@classid_1 int=0 output
只要设置了默认值的,在程序中调用存储过程时,这个参数就可以不传值。Top




