谁能帮我看看我的sql server的存储过程错在哪里..急..

LEE_9903 2003-07-27 12:59:34
CREATE PROCEDURE dbo.dt_login
@username varchar(100),
@result integer output
AS
begin
declare @sql_str varchar(1000)
if left(@username,len( @username )) in (select left(name,len( @username )) from sysobjects)
begin
set @result=0
end
else
begin
set @result=1
set @sql_str = 'CREATE TABLE ' + @username
exec(@sql_str)
end

end
GO
...全文
53 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangvxin1 2003-07-27
  • 打赏
  • 举报
回复
试了一下,加个字段就行。
erigido 2003-07-27
  • 打赏
  • 举报
回复
'CREATE TABLE ' + @username
你创建的表没有字段,语法有错误,加上字段就行了。
LEE_9903 2003-07-27
  • 打赏
  • 举报
回复
谢谢大家的帮忙..
我没有给过分..
你们看你们得分没有呀!!
ckp 2003-07-27
  • 打赏
  • 举报
回复
此处语句不完整:
set @sql_str = 'CREATE TABLE ' + @username
缺少字段名。
LEE_9903 2003-07-27
  • 打赏
  • 举报
回复
非常之感谢...
改成全局临时表就行了..
我是用delphi来调这个的..
现在给大家加分
LEE_9903 2003-07-27
  • 打赏
  • 举报
回复
哦!!
我还以为存储过程结束后还没有删除临时表.
我再试试先..
Rivulet119 2003-07-27
  • 打赏
  • 举报
回复
哦,你已经有输出变量了,上面的回帖我收回。
zjcxc 元老 2003-07-27
  • 打赏
  • 举报
回复
你如果要使用在存储过程中创建的临时表
那要改用全局临时表,就是用这种名称:##临时表名


或者直接创建正常表,用完后删除.
zjcxc 元老 2003-07-27
  • 打赏
  • 举报
回复
临时表当然找不到啦
只有一个#的是局部临时表,只在创建它的过程中有效,这个过程结束,它也会被自动删除.

而且,临时表的属性也不是保存在当前数据库的sysobjects中,是保存在tempdb这个数据库的sysobjects中
并且其表名为:临时表名+系统随机分配的编号
Rivulet119 2003-07-27
  • 打赏
  • 举报
回复
另外,在存储过程的最后,还应加上
Return @result 语句,供前台判断使用
Rivulet119 2003-07-27
  • 打赏
  • 举报
回复
up
LEE_9903 2003-07-27
  • 打赏
  • 举报
回复
不知道为什么表没有创建成功....
我在sysobjects表中找不到新创建的临时表的名称..
woyaofengle 2003-07-27
  • 打赏
  • 举报
回复
'CREATE TABLE ' + @username
你创建的表没有字段,语法有错误,加上字段就行了。
wdsimon 2003-07-27
  • 打赏
  • 举报
回复
同意楼上:
CREATE PROCEDURE dt_login
@username varchar(100),
@result integer output
AS
begin
declare @sql_str varchar(1000)
if left(@username,len( @username )) in (select left(name,len( @username )) from sysobjects)
begin
set @result=0
end
else
begin
set @result=1
set @sql_str = 'CREATE TABLE ' + @username+'(field1 char(20),field2 int)'
exec(@sql_str)
end
end
GO

exec dt_login '#table1',0
运行结果:
The command(s) completed successfully.
friendliu 2003-07-27
  • 打赏
  • 举报
回复
'CREATE TABLE ' + @username
你创建的表没有字段,语法有错误,加上字段就行了。
friendliu 2003-07-27
  • 打赏
  • 举报
回复
else
begin
set @result=1
set @sql_str = 'CREATE TABLE ' + @username
exec(@sql_str)
end

这段有问题
LEE_9903 2003-07-27
  • 打赏
  • 举报
回复
不知道道为什么调用时总会报值错误 例如@username='#ff',就报#ff附近的语句错误.
哪位高手能帮帮小弟..
先谢了..

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧