找回密码
 立即注册

QQ登录

只需一步,快速开始

corsak

中级会员

20

主题

68

帖子

516

积分

中级会员

积分
516
corsak
中级会员   /  发表于:2020-10-28 23:50  /   查看:3246  /  回复:5
20金币
本帖最后由 corsak 于 2020-10-30 08:34 编辑

没整明白,有大侠指点一下么?代码如下:
  1. ALTER PROCEDURE [dbo].[p_GetV_view]
  2. @仓库ID AS bigint
  3. AS
  4. BEGIN
  5. DECLARE @sqlstr1 varchar(255)
  6. DECLARE @sqlstr2 varchar(255)

  7. SELECT @sqlstr1='IF EXISTS (SELECT 1 FROM sys.VIEWS WHERE NAME=''临时视图'')  DROP VIEW 临时视图'--判断视图是否存在,存在则删除

  8. SELECT @sqlstr2='CREATE VIEW 临时视图 AS SELECT * FROM [dbo].[TY_资源库] where 物品编码 not in (select 编号 from CK_库存表 where 仓库ID<>@仓库ID)' --创建视图
  9. EXEC (@sqlstr1)
  10. EXEC (@sqlstr2)
  11. END
复制代码
出错信息如下:
  1. Msg 137, Level 15, State 2, Server WIN10-20190527R\MSSQLSERVER1, Procedure 临时视图, Line 1
  2. 必须声明标量变量 "@仓库ID"。

  3. Procedure execution failed

  4. [42000] [Microsoft][SQL Server Native Client 11.0][SQL Server]必须声明标量变量 "@仓库ID"。 (137)


  5. 时间: 0.006s
复制代码

最佳答案

查看完整内容

ALTER PROCEDURE [dbo]. (@仓库ID AS bigint) AS 参数要加括号

6 个回复

倒序浏览
最佳答案
最佳答案
zd588
初级会员   /  发表于:2020-10-28 23:50:37
来自 2#
ALTER PROCEDURE [dbo].[p_GetV_view]
(@仓库ID AS bigint)
AS
参数要加括号
回复 使用道具 举报
小侠米
论坛元老   /  发表于:2020-10-29 09:07:31
3#

  1. ALTER PROCEDURE [dbo].[p_GetV_view]
  2. @仓库ID AS bigint
  3. AS
  4. BEGIN
  5. DECLARE @sqlstr1 Nvarchar(255)
  6. DECLARE @sqlstr2 Nvarchar(255)

  7. SELECT @sqlstr1=N'IF EXISTS (SELECT 1 FROM sys.VIEWS WHERE NAME=''临时视图'')&#160;&#160;DROP VIEW 临时视图'--判断视图是否存在,存在则删除

  8. SELECT @sqlstr2=N'CREATE VIEW 临时视图 AS SELECT * FROM [dbo].[TY_资源库] where 物品编码 not in (select 编号 from CK_库存表 where 仓库ID<>'+CONVERT(VARCHAR(100),@仓库ID)+')' --创建视图
  9. EXEC (@sqlstr1)
  10. EXEC (@sqlstr2)
  11. END
复制代码

点评

非常感谢,您的方式也OK!!!  发表于 2020-10-29 21:29
回复 使用道具 举报
Erik.Xue讲师达人认证 悬赏达人认证 活字格认证 Wyn认证
超级版主   /  发表于:2020-10-29 17:30:03
4#
可以参考楼上大佬的存储过程哈。
回复 使用道具 举报
corsak
中级会员   /  发表于:2020-10-29 21:28:42
5#
非常感谢,二位的方式都能OK!
回复 使用道具 举报
Lucas.Su讲师达人认证 悬赏达人认证 活字格认证
葡萄城公司职员   /  发表于:2020-10-30 08:43:47
6#
感谢大家对活字格的支持
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部