Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql server-如何通过过程插入多个表映像_Sql_Sql Server_Database_Stored Procedures_Datatable - Fatal编程技术网

sql server-如何通过过程插入多个表映像

sql server-如何通过过程插入多个表映像,sql,sql-server,database,stored-procedures,datatable,Sql,Sql Server,Database,Stored Procedures,Datatable,我有5个相互连接的表,因此每个用户都可以插入带有图像的故事(nvarchar)。我想更改我的过程,以便它能够在每个故事中插入多个图像。你能帮我一把吗?(我应该创建两个程序,以及如何更改这一个) 在我完成它之后,我想创建一个新的过程来获取故事(nvarchar)及其所有图像。 你能帮助我知道如何改变dbo.stroyes表和其他表,使dbo.stroyes有一个包含许多图片的故事吗 我的程序(只有一张图片): 感谢您的帮助:)正如我在您上一篇文章的评论中所解释的那样:如果要将多个图像链接到一个故

我有5个相互连接的表,因此每个用户都可以插入带有图像的故事(nvarchar)。我想更改我的过程,以便它能够在每个故事中插入多个图像。你能帮我一把吗?(我应该创建两个程序,以及如何更改这一个)

在我完成它之后,我想创建一个新的过程来获取故事(nvarchar)及其所有图像。 你能帮助我知道如何改变dbo.stroyes表和其他表,使dbo.stroyes有一个包含许多图片的故事吗

我的程序(只有一张图片):


感谢您的帮助:)

正如我在您上一篇文章的评论中所解释的那样:如果要将多个图像链接到一个故事,请不要使用
Stories
表的
imgID2
列。除非它有某种用途(我们不知道),否则该列可以删除。相反,要添加新故事的第一个图像,请使用类似于您的步骤:

CREATE PROC AddUserStory    
  @UserID [int],
  @img [varchar] (max),
  @story [nvarchar] (120)

 AS
 BEGIN

   DECLARE @StoryID int, @ImageID int;

   INSERT INTO Images ([img])
   VALUES (@img);
   SET @ImageID = SCOPE_IDENTITY();

   INSERT INTO Stories ([StoryText])
   VALUES (@story);
   SET @StoryID = SCOPE_IDENTITY();

   INSERT INTO dbo.imagesInStories (StoryID3, imgID3)
   VALUES (@StoryID, @ImageID);

   INSERT INTO dbo.Users_Stories (ID2, StoryID2)
   VALUES (@UserID, @StoryID);

END
要向故事添加其他图像,应用程序必须已经知道相关故事的
StoryID
,并且可以添加调用存储过程的每个图像,如下所示:

CREATE PROC AddImageToStory    
  @StoryID [int],
  @img [varchar] (max),

 AS
 BEGIN

   DECLARE @ImageID int;

   INSERT INTO Images ([img])
   VALUES (@img);
   SET @ImageID = SCOPE_IDENTITY();

   INSERT INTO dbo.imagesInStories (StoryID3, imgID3)
   VALUES (@StoryID, @ImageID);

END
SELECT  Table_Users.UserID , Stories.StoryID, Images.imgID
FROM  dbo.Images
  INNER JOIN dbo.imagesInStories ON Images.imgID = imagesInStories.imgID3
    INNER JOIN dbo.Stories ON imagesInStories.StoryID3 = Stories.StoryID
      INNER JOIN dbo.Users_Stories ON Stories.StoryID = Users_Stories.StoryID2 
        INNER JOIN dbo.Table_Users ON Users_Stories.ID2 = Table_Users.UserID
最后,要使用所有图像查询所有用户故事,请使用如下查询:

CREATE PROC AddImageToStory    
  @StoryID [int],
  @img [varchar] (max),

 AS
 BEGIN

   DECLARE @ImageID int;

   INSERT INTO Images ([img])
   VALUES (@img);
   SET @ImageID = SCOPE_IDENTITY();

   INSERT INTO dbo.imagesInStories (StoryID3, imgID3)
   VALUES (@StoryID, @ImageID);

END
SELECT  Table_Users.UserID , Stories.StoryID, Images.imgID
FROM  dbo.Images
  INNER JOIN dbo.imagesInStories ON Images.imgID = imagesInStories.imgID3
    INNER JOIN dbo.Stories ON imagesInStories.StoryID3 = Stories.StoryID
      INNER JOIN dbo.Users_Stories ON Stories.StoryID = Users_Stories.StoryID2 
        INNER JOIN dbo.Table_Users ON Users_Stories.ID2 = Table_Users.UserID

不要将DDL作为图像发布,而应将其作为
文本发布。是否确实选择了用于存储图像的正确数据类型?我认为
varbinary(max)
(可能还有一个用于存储其MIME类型的附加列)更合适/涉及更少不必要的转换。大多数图像格式都是二进制格式。只要我和你知道谁写了这个程序(我试了很多次之后),就可以了。如果这里的一些人不是很好而且有道德感,他们会对我和我的帖子发表评论……别担心,我非常欣赏你。谢谢